{"id":9304,"name":"oauthlib","ecosystem":"pip","repository_url":"https://github.com/oauthlib/oauthlib","issues_count":265,"created_at":"2025-06-06T22:33:22.694Z","updated_at":"2025-06-06T22:33:22.694Z","purl":"pkg:pypi/oauthlib","metadata":{"id":2823840,"name":"oauthlib","ecosystem":"pypi","description":"A generic, spec-compliant, thorough implementation of the OAuth request-signing logic","homepage":"https://github.com/oauthlib/oauthlib","licenses":"BSD","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/oauthlib/oauthlib","keywords_array":[],"namespace":null,"versions_count":50,"first_release_published_at":"2012-04-11T16:14:11.000Z","latest_release_published_at":"2022-10-17T20:04:24.000Z","latest_release_number":"3.2.2","last_synced_at":"2025-06-06T22:01:31.259Z","created_at":"2022-04-10T11:47:37.970Z","updated_at":"2025-06-06T22:01:31.260Z","registry_url":"https://pypi.org/project/oauthlib/","install_command":"pip install oauthlib --index-url https://pypi.org/simple","documentation_url":"https://oauthlib.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Environment :: Web Environment","Intended Audience :: Developers","License :: OSI Approved","License :: OSI Approved :: BSD License","Operating System :: MacOS","Operating System :: POSIX","Operating System :: POSIX :: Linux","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.6","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Software Development :: Libraries :: Python Modules"],"normalized_name":"oauthlib"},"repo_metadata":{"id":1885498,"uuid":"2811323","full_name":"oauthlib/oauthlib","owner":"oauthlib","description":"A generic, spec-compliant, thorough implementation of the OAuth request-signing logic","archived":false,"fork":false,"pushed_at":"2024-02-06T14:46:47.000Z","size":3123,"stargazers_count":2755,"open_issues_count":90,"forks_count":478,"subscribers_count":67,"default_branch":"master","last_synced_at":"2024-05-22T09:05:49.936Z","etag":null,"topics":["authentication","authorization","identity","jwt-authentication","jwt-bearer-tokens","library","oauth","oauth1","oauth2","oidc","oidc-provider","openid-connect","python","python-2","python-3","python2","python3","token-based-authentication"],"latest_commit_sha":null,"homepage":"https://oauthlib.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oauthlib.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"docs/contributing.rst","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["JonathanHuot"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2011-11-19T23:08:51.000Z","updated_at":"2024-05-21T14:54:58.000Z","dependencies_parsed_at":"2024-04-28T01:51:11.287Z","dependency_job_id":"46906e41-09fa-4c40-9092-40f2c2786ba1","html_url":"https://github.com/oauthlib/oauthlib","commit_stats":{"total_commits":1207,"total_committers":198,"mean_commits":6.095959595959596,"dds":0.7555923777961889,"last_synced_commit":"7d7fe904af504c20f7d802650e54a78e3d0be8ba"},"previous_names":["idan/oauthlib"],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oauthlib","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217866787,"owners_count":16243092,"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":"oauthlib","name":"OAuthlib","uuid":"33832354","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33832354?v=4","repositories_count":1,"last_synced_at":"2024-03-25T18:41:15.673Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/oauthlib","funding_links":[],"total_stars":2734,"followers":19,"following":0,"created_at":"2022-11-02T16:22:51.432Z","updated_at":"2024-03-25T18:41:15.682Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oauthlib","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oauthlib/repositories"},"tags":[{"name":"v3.2.2","sha":"e6c33e41a8ce6dadff387cdc4613a55b63d1827e","kind":"commit","published_at":"2022-10-17T19:42:56.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v3.2.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v3.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.2.2/manifests"},{"name":"v3.2.1","sha":"88bb1562930a9bd9368bf26120655794d90d9585","kind":"commit","published_at":"2022-09-09T19:54:25.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v3.2.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v3.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.2.1/manifests"},{"name":"v3.2.0","sha":"112404878bdc8b492764e133c388afb978392e09","kind":"commit","published_at":"2022-01-29T22:04:08.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v3.2.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v3.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.2.0/manifests"},{"name":"v3.1.1","sha":"c6037ce5b36145de22df45abe0e96abfa95873ae","kind":"commit","published_at":"2021-06-01T19:11:24.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v3.1.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v3.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.1.1/manifests"},{"name":"v3.1.0","sha":"31cae75c9d561529091db82a03ea2b6c83edc02d","kind":"commit","published_at":"2019-08-06T14:41:36.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v3.1.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v3.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.1.0/manifests"},{"name":"v3.0.2","sha":"9e824cfb0eb36b4d23ab73171b821b1a74ec659c","kind":"commit","published_at":"2019-07-04T09:22:12.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v3.0.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v3.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.0.2/manifests"},{"name":"v3.0.1","sha":"575638ce7ddb8727e08980235ccd82152af85703","kind":"commit","published_at":"2019-01-24T13:28:43.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v3.0.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v3.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.0.1/manifests"},{"name":"v3.0.0","sha":"9dfa40c3bdab3aa788e711283afdf36c2fbdd1de","kind":"commit","published_at":"2019-01-07T21:19:17.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v3.0.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v3.0.0/manifests"},{"name":"v2.1.0","sha":"f853295b674cb2be0b83f72f71739a7a23f5936e","kind":"commit","published_at":"2018-05-22T10:17:16.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v2.1.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.1.0/manifests"},{"name":"v2.0.7","sha":"bea0c2658ae5be45896c9d067422cd417eec847b","kind":"commit","published_at":"2018-03-19T13:38:26.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v2.0.7","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v2.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.7/manifests"},{"name":"v2.0.6","sha":"4d5447f33019b54eb657e026dc0b9475e5a7105a","kind":"commit","published_at":"2017-10-19T15:15:20.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v2.0.6","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v2.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.6/manifests"},{"name":"v2.0.5","sha":"fb7ec207b17e0cacf52f9f3c2643c4b9036d827c","kind":"commit","published_at":"2017-10-18T15:27:41.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v2.0.5","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v2.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.5/manifests"},{"name":"v2.0.4","sha":"82c77e3f716e9a2fd484e2e73fd666d2f9532a28","kind":"commit","published_at":"2017-09-17T11:23:57.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v2.0.4","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v2.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.4/manifests"},{"name":"v2.0.3","sha":"122b51c72a78aad249ee6547d89f8bc0a06fd9b3","kind":"commit","published_at":"2017-09-07T10:50:53.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v2.0.3","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v2.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.3/manifests"},{"name":"v2.0.2","sha":"4ec41c67e36355cd2aeca094d676b172fea4717a","kind":"commit","published_at":"2017-03-19T12:48:15.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v2.0.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v2.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.2/manifests"},{"name":"v2.0.1","sha":"3eb6fe934c8c8d6c34e22b4e4fc1bd01d0266df6","kind":"commit","published_at":"2016-11-23T10:22:37.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v2.0.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.1/manifests"},{"name":"v2.0.0","sha":"38c563dbcf38b663717336dac74c88077efd2e1e","kind":"commit","published_at":"2016-09-03T08:52:31.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v2.0.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v2.0.0/manifests"},{"name":"v1.1.2","sha":"43fb7f5bfb5fb1086d2d8ef1e57b77e84db24b45","kind":"commit","published_at":"2016-06-01T13:02:42.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v1.1.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v1.1.2/manifests"},{"name":"1.1.1","sha":"25d3c12933017c47c9d63de939b559846b23fca5","kind":"commit","published_at":"2016-05-01T07:28:35.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/1.1.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.1.1/manifests"},{"name":"1.1.0","sha":"8d35dc007fea413b37ec96e90a6380746ec39773","kind":"commit","published_at":"2016-04-11T09:51:05.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/1.1.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.1.0/manifests"},{"name":"0.7.2+oidc","sha":"ed69a2458c99b2039ff3aa32749159fe31d1fbb5","kind":"commit","published_at":"2015-10-01T15:31:57.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.7.2+oidc","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.7.2+oidc","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.7.2+oidc","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.7.2+oidc/manifests"},{"name":"1.0.3","sha":"79722b2aa0b191db4a345ce29095b70d92ded140","kind":"commit","published_at":"2015-08-16T12:18:01.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/1.0.3","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.0.3/manifests"},{"name":"1.0.2","sha":"db40f9989545fc170960f692bedd3c8ba2cf0642","kind":"tag","published_at":"2015-08-10T09:34:49.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/1.0.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.0.2/manifests"},{"name":"1.0.1","sha":"fecf37b624c14c89a3ee15bb205b51b05575fc2e","kind":"commit","published_at":"2015-07-25T07:25:37.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/1.0.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.0.1/manifests"},{"name":"1.0.0","sha":"933711ecdb4f1235307dc5815eac1828d523f4e1","kind":"commit","published_at":"2015-07-19T13:28:39.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/1.0.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/1.0.0/manifests"},{"name":"0.7.2","sha":"fd239fca84644896b1971cf24bc6213d065adb86","kind":"tag","published_at":"2014-11-13T12:39:45.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.7.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.7.2/manifests"},{"name":"0.7.1","sha":"04631866c058defb480462db1ec13cb7f88780a9","kind":"tag","published_at":"2014-10-27T17:09:36.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.7.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.7.1/manifests"},{"name":"0.7.0","sha":"9838a002fc9b82c907d4ba495a34d0ce21386e44","kind":"tag","published_at":"2014-10-27T13:55:34.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.7.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.7.0/manifests"},{"name":"0.6.3","sha":"de773eefcb3c1afe54a0c12d5bf9bd214ceaf404","kind":"tag","published_at":"2014-06-10T10:36:00.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.6.3","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.6.3/manifests"},{"name":"0.6.2","sha":"969d0994234454b05a7b310b8dd40e66e900eede","kind":"tag","published_at":"2014-06-06T11:00:21.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.6.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.6.2/manifests"},{"name":"0.6.1","sha":"056e7ce13de4de913af8617891dc92e0ea43c669","kind":"tag","published_at":"2014-01-20T11:09:53.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.6.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.6.1/manifests"},{"name":"0.6.0","sha":"25c82a2c925dcdb37704a1bf145830c8084ec33c","kind":"tag","published_at":"2013-09-13T10:06:07.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.6.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.6.0/manifests"},{"name":"0.5.1","sha":"f794cf31971274766378faf140d60e5ec3807286","kind":"tag","published_at":"2013-07-26T18:13:07.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.5.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.5.1/manifests"},{"name":"0.5.0","sha":"809646f84cd2f0941773ce99acc95ea216ea1cb8","kind":"tag","published_at":"2013-07-09T17:12:49.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.5.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.5.0/manifests"},{"name":"0.4.2","sha":"b9ef07ca18ec56ef8dfe24344c81ef1ba3a59e34","kind":"tag","published_at":"2013-05-31T14:22:43.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.4.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.4.2/manifests"},{"name":"0.4.1","sha":"4ed94f7fac84c69b799f475444729320aa7888be","kind":"tag","published_at":"2013-05-20T17:11:50.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.4.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.4.1/manifests"},{"name":"0.4.0","sha":"b1b829ccf26d78e95ac055bb76843e6b4e1cff75","kind":"tag","published_at":"2013-03-26T18:01:05.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.4.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.4.0/manifests"},{"name":"0.3.8","sha":"1da50150c508ae96c7f05cdf4ab987cb5611034c","kind":"tag","published_at":"2013-02-23T15:38:55.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.3.8","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.3.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.8/manifests"},{"name":"0.3.7","sha":"0e9f5e504fad3ecfcdbcba301e72160844fcc18e","kind":"tag","published_at":"2013-02-11T23:34:39.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.3.7","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.3.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.7/manifests"},{"name":"0.3.6","sha":"fbf0c0e6669a31b51c42ea0b93af9938192167b6","kind":"tag","published_at":"2013-02-04T23:15:56.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.3.6","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.3.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.6/manifests"},{"name":"0.3.5","sha":"9edd36f962cc2f28368a3db924fdef8e99a0950b","kind":"tag","published_at":"2013-01-29T20:16:20.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.3.5","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.3.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.5/manifests"},{"name":"0.3.4","sha":"20e71a41edc1a632d9437ca927ea0d3b0535c7f9","kind":"tag","published_at":"2012-11-19T18:28:05.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.3.4","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.4/manifests"},{"name":"0.3.3","sha":"ee45e51bf48347f102d51cf3256cd6a2f2db9525","kind":"tag","published_at":"2012-11-08T22:59:09.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.3.3","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.3/manifests"},{"name":"0.3.2","sha":"bee010a211d228764cd5b4207132c79a601e80a6","kind":"tag","published_at":"2012-11-08T19:55:47.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.3.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.2/manifests"},{"name":"0.3.1","sha":"4c35c1f0aff816595eade77103da1cae4197e4a7","kind":"tag","published_at":"2012-10-23T19:27:20.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.3.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.1/manifests"},{"name":"0.3.0","sha":"36e07d9476a67086ec1a8d917cdc703531673440","kind":"tag","published_at":"2012-07-09T19:54:47.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.3.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.3.0/manifests"},{"name":"0.2.1","sha":"56b0cec481c7457a658b54f979f0fea3c1189c12","kind":"tag","published_at":"2012-06-27T17:27:23.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.2.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.2.1/manifests"},{"name":"0.2.0","sha":"184db924c5b3f208a3e34432e38a253ab4ed8d6d","kind":"tag","published_at":"2012-06-25T12:32:10.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.2.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.2.0/manifests"},{"name":"0.1.4","sha":"b70c19b4ae783507c929ee88f9b0cdcb101a9131","kind":"tag","published_at":"2012-06-25T09:28:58.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.1.4","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.1.4/manifests"},{"name":"0.1.2","sha":"029708cea64c6b2a19d28de49b0e0f4ba6cf59ac","kind":"commit","published_at":"2012-05-03T05:37:39.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.1.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.1.2/manifests"},{"name":"0.1.1","sha":"38bde2d15e4e19afc5c3489bd72cf4dc818135d5","kind":"commit","published_at":"2012-05-03T05:31:33.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.1.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.1.1/manifests"},{"name":"0.1.0","sha":"c8a63500581644a184df782b19e3a5b7dec32702","kind":"commit","published_at":"2012-05-02T22:02:47.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.1.0","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.1.0/manifests"},{"name":"0.0.2","sha":"8f060a0c48f847b1c30e390f0d6f7f887ce87dd7","kind":"tag","published_at":"2012-04-12T20:08:31.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/0.0.2","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/0.0.2/manifests"},{"name":"v0.0.1","sha":"3c5045cad694ceb767fd2fee2e2bee0144ffa078","kind":"tag","published_at":"2012-04-12T06:57:35.000Z","download_url":"https://codeload.github.com/oauthlib/oauthlib/tar.gz/v0.0.1","html_url":"https://github.com/oauthlib/oauthlib/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oauthlib%2Foauthlib/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2024-09-07T23:07:20.061Z","dependent_packages_count":489,"downloads":153019334,"downloads_period":"last-month","dependent_repos_count":100425,"rankings":{"downloads":0.01302257674607993,"dependent_repos_count":0.011188411007195432,"dependent_packages_count":0.05612547160986561,"stargazers_count":1.9632910069019658,"forks_count":3.1169812566603143,"docker_downloads_count":0.0036683314777689944,"average":0.8607128424005316},"purl":"pkg:pypi/oauthlib","advisories":[{"uuid":"GSA_kwCzR0hTQS0zcGdqLXBnNmMtcjVwN84AAu17","url":"https://github.com/advisories/GHSA-3pgj-pg6c-r5p7","title":"OAuthLib vulnerable to DoS when attacker provides malicious IPV6 URI","description":"### Impact\n- Attacker providing malicious redirect uri can cause DoS to oauthlib's web application.\n- Attacker can also leverage usage of `uri_validate` functions depending where it is used.\n\n_What kind of vulnerability is it? Who is impacted?_\n\nOauthlib applications using OAuth2.0 provider support or use directly `uri_validate` function.\n\n### Patches\n_Has the problem been patched? What versions should users upgrade to?_\n\nIssue fixed in 3.2.2 release.\n\n### Workarounds\n_Is there a way for users to fix or remediate the vulnerability without upgrading?_\n\nThe `redirect_uri` can be verified in web toolkit (i.e `bottle-oauthlib`, `django-oauth-toolkit`, ...) before oauthlib is called. A sample check if `:` is present to reject the request can prevent the DoS, assuming no port or IPv6 is fundamentally required.\n\n### References\nAttack Vector:\n- Attacker providing malicious redirect uri:\nhttps://github.com/oauthlib/oauthlib/blob/d4bafd9f1d0eba3766e933b1ac598cbbf37b8914/oauthlib/oauth2/rfc6749/grant_types/base.py#L232\n- Vulnerable `uri_validate` functions:\nhttps://github.com/oauthlib/oauthlib/blob/2b8a44855a51ad5a5b0c348a08c2564a2e197ea2/oauthlib/uri_validate.py\n\n### PoC\n```python\nis_absolute_uri(\"http://[:::::::::::::::::::::::::::::::::::::::]/path\")\n```\n\n### Acknowledgement\nSpecial thanks to Sebastian Chnelik - PyUp.io","origin":"UNSPECIFIED","severity":"MODERATE","published_at":"2022-09-16T21:02:52.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":5.7,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:H","references":["https://github.com/oauthlib/oauthlib/security/advisories/GHSA-3pgj-pg6c-r5p7","https://nvd.nist.gov/vuln/detail/CVE-2022-36087","https://github.com/oauthlib/oauthlib/commit/2e40b412c844ecc4673c3fa3f72181f228bdbacd","https://github.com/oauthlib/oauthlib/blob/d4bafd9f1d0eba3766e933b1ac598cbbf37b8914/oauthlib/oauth2/rfc6749/grant_types/base.py#L232","https://github.com/pypa/advisory-database/tree/main/vulns/oauthlib/PYSEC-2022-269.yaml","https://github.com/oauthlib/oauthlib/blob/2b8a44855a51ad5a5b0c348a08c2564a2e197ea2/oauthlib/uri_validate.py","https://github.com/oauthlib/oauthlib/releases/tag/v3.2.1","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/LXOPIA6M57CFQPUT6HHSNXCTV6QA3UDI","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/NBCQJR3ZF7FVNTJYRVPVSQEQRAYZIUHU","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QRYLYHE5HWF6R2CRLJFUK4PILR47WXOE","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/X2CQZM5CKOUM4GW2GTAPQEQFPITQ6F7S","https://github.com/advisories/GHSA-3pgj-pg6c-r5p7"],"source_kind":"github","identifiers":["GHSA-3pgj-pg6c-r5p7","CVE-2022-36087"],"repository_url":"https://github.com/oauthlib/oauthlib","blast_radius":28.510498490301142,"packages":[{"versions":[{"first_patched_version":"3.2.2","vulnerable_version_range":"\u003e= 3.1.1, \u003c 3.2.2"}],"ecosystem":"pypi","package_name":"oauthlib"}],"created_at":"2022-12-21T16:11:58.531Z","updated_at":"2024-10-07T16:52:34.000Z"}],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/oauthlib","docker_dependents_count":12590,"docker_downloads_count":8813753950,"usage_url":"https://repos.ecosyste.ms/usage/pypi/oauthlib","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/oauthlib/dependencies","status":null,"funding_links":["https://github.com/sponsors/JonathanHuot"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/oauthlib/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/oauthlib/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/oauthlib/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/oauthlib/related_packages","maintainers":[{"uuid":"the_drow","login":"the_drow","name":null,"email":null,"url":null,"packages_count":30,"html_url":"https://pypi.org/user/the_drow/","role":null,"created_at":"2023-01-13T09:56:19.710Z","updated_at":"2023-01-13T09:56:19.710Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/the_drow/packages"},{"uuid":"ib.lundgren","login":"ib.lundgren","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/ib.lundgren/","role":null,"created_at":"2023-01-13T09:56:19.697Z","updated_at":"2023-01-13T09:56:19.697Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/ib.lundgren/packages"},{"uuid":"dgouldin","login":"dgouldin","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://pypi.org/user/dgouldin/","role":null,"created_at":"2023-01-13T09:56:19.695Z","updated_at":"2023-01-13T09:56:19.695Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/dgouldin/packages"},{"uuid":"idangazit","login":"idangazit","name":null,"email":null,"url":null,"packages_count":4,"html_url":"https://pypi.org/user/idangazit/","role":null,"created_at":"2023-01-13T09:56:19.701Z","updated_at":"2023-01-13T09:56:19.701Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/idangazit/packages"},{"uuid":"JonathanHuot","login":"JonathanHuot","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://pypi.org/user/JonathanHuot/","role":null,"created_at":"2023-01-13T09:56:19.703Z","updated_at":"2023-01-13T09:56:19.703Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/JonathanHuot/packages"},{"uuid":"skion","login":"skion","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/skion/","role":null,"created_at":"2023-01-13T09:56:19.707Z","updated_at":"2023-01-13T09:56:19.707Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/skion/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690419,"maintainers_count":292811,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":157,"unique_repositories_count_past_30_days":0,"recent_issues":[{"uuid":"3970470274","node_id":"PR_kwDOJ9Adm87FQ8fo","number":3,"state":"open","title":"build(deps): bump the pip group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-20T21:35:06.000Z","updated_at":"2026-02-20T21:35:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip","update_count":3,"packages":[{"name":"flask","old_version":"1.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"oauthlib","old_version":"3.1.1","new_version":"3.2.2","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"requests","old_version":"2.26.0","new_version":"2.32.4","repository_url":"https://github.com/psf/requests"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 3 updates in the /PolyglottVoice/backend directory: [flask](https://github.com/pallets/flask), [oauthlib](https://github.com/oauthlib/oauthlib) and [requests](https://github.com/psf/requests).\n\nUpdates `flask` from 1.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue 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/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.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/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.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/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/1.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `oauthlib` from 3.1.1 to 3.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.2\u003c/h2\u003e\n\u003ch2\u003eOAuth2.0 Provider:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2022-36087\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.1\u003c/h2\u003e\n\u003ch2\u003eIn short\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/803\"\u003e#803\u003c/a\u003e : Metadata endpoint support of non-HTTPS\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth1.0:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/818\"\u003e#818\u003c/a\u003e : Allow IPv6 being parsed by signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved and fixed documentation warnings.\u003c/li\u003e\n\u003cli\u003eCosmetic changes based on isort\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing slots to TokenBase by \u003ca href=\"https://github.com/ariebovenberg\"\u003e\u003ccode\u003e@​ariebovenberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/804\"\u003eoauthlib/oauthlib#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd CORS support for Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/806\"\u003eoauthlib/oauthlib#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGitHub Action to lint Python code by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/797\"\u003eoauthlib/oauthlib#797\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: fix Sphinx warnings for better ReadTheDocs generation by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/807\"\u003eoauthlib/oauthlib#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow non-HTTPS issuer when OAUTHLIB_INSECURE_TRANSPORT. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/803\"\u003eoauthlib/oauthlib#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix typo in test by \u003ca href=\"https://github.com/tamanobi\"\u003e\u003ccode\u003e@​tamanobi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/816\"\u003eoauthlib/oauthlib#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in server.rst by \u003ca href=\"https://github.com/NemanjaT\"\u003e\u003ccode\u003e@​NemanjaT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/819\"\u003eoauthlib/oauthlib#819\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed isort imports by \u003ca href=\"https://github.com/dasm\"\u003e\u003ccode\u003e@​dasm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/820\"\u003eoauthlib/oauthlib#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix a few typos by \u003ca href=\"https://github.com/timgates42\"\u003e\u003ccode\u003e@​timgates42\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/822\"\u003eoauthlib/oauthlib#822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typos by \u003ca href=\"https://github.com/kianmeng\"\u003e\u003ccode\u003e@​kianmeng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/823\"\u003eoauthlib/oauthlib#823\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/ariebovenberg\"\u003e\u003ccode\u003e@​ariebovenberg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/804\"\u003eoauthlib/oauthlib#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tamanobi\"\u003e\u003ccode\u003e@​tamanobi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/816\"\u003eoauthlib/oauthlib#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NemanjaT\"\u003e\u003ccode\u003e@​NemanjaT\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/819\"\u003eoauthlib/oauthlib#819\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kianmeng\"\u003e\u003ccode\u003e@​kianmeng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/823\"\u003eoauthlib/oauthlib#823\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.0...v3.2.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.2.0...v3.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.2.0\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/795\"\u003e#795\u003c/a\u003e: Add Device Authorization Flow for Web Application\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/786\"\u003e#786\u003c/a\u003e: Add PKCE support for Client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/783\"\u003e#783\u003c/a\u003e: Fallback to none in case of wrong expires_at format.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/790\"\u003e#790\u003c/a\u003e: Add support for CORS to metadata endpoint.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/791\"\u003e#791\u003c/a\u003e: Add support for CORS to token endpoint.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/787\"\u003e#787\u003c/a\u003e: Remove comma after Bearer in WWW-Authenticate\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Provider - OIDC:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/755\"\u003e#755\u003c/a\u003e: Call save_token in Hybrid code flow\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.2 (2022-10-17)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2022-36087\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.1 (2022-09-09)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/803\"\u003e#803\u003c/a\u003e: Metadata endpoint support of non-HTTPS\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth1.0:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/818\"\u003e#818\u003c/a\u003e: Allow IPv6 being parsed by signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved and fixed documentation warnings.\u003c/li\u003e\n\u003cli\u003eCosmetic changes based on isort\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.0 (2022-01-29)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/795\"\u003e#795\u003c/a\u003e: Add Device Authorization Flow for Web Application\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/786\"\u003e#786\u003c/a\u003e: Add PKCE support for Client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/783\"\u003e#783\u003c/a\u003e: Fallback to none in case of wrong expires_at format.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/790\"\u003e#790\u003c/a\u003e: Add support for CORS to metadata endpoint.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/791\"\u003e#791\u003c/a\u003e: Add support for CORS to token endpoint.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/787\"\u003e#787\u003c/a\u003e: Remove comma after Bearer in WWW-Authenticate\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Provider - OIDC:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/755\"\u003e#755\u003c/a\u003e: Call save_token in Hybrid code flow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/751\"\u003e#751\u003c/a\u003e: OIDC add support of refreshing ID Tokens with \u003ccode\u003erefresh_id_token\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/751\"\u003e#751\u003c/a\u003e: The RefreshTokenGrant modifiers now take the same arguments as the\nAuthorizationCodeGrant modifiers (\u003ccode\u003etoken\u003c/code\u003e, \u003ccode\u003etoken_handler\u003c/code\u003e, \u003ccode\u003erequest\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Python 3.9, 3.10, 3.11\u003c/li\u003e\n\u003cli\u003eImprove Travis \u0026amp; Coverage\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/e6c33e41a8ce6dadff387cdc4613a55b63d1827e\"\u003e\u003ccode\u003ee6c33e4\u003c/code\u003e\u003c/a\u003e Add 3.2.2 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/4a4d65f8eeecfe7d778269466871c5c15fe9c1bc\"\u003e\u003ccode\u003e4a4d65f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/832\"\u003e#832\u003c/a\u003e from oauthlib/3.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/88bb1562930a9bd9368bf26120655794d90d9585\"\u003e\u003ccode\u003e88bb156\u003c/code\u003e\u003c/a\u003e Updated date and authors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/2e40b412c844ecc4673c3fa3f72181f228bdbacd\"\u003e\u003ccode\u003e2e40b41\u003c/code\u003e\u003c/a\u003e Merge pull request from GHSA-3pgj-pg6c-r5p7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/1a45d9790543673208e603e13a7be4aa4cba7339\"\u003e\u003ccode\u003e1a45d97\u003c/code\u003e\u003c/a\u003e Prepare 3.2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/b4bdd09c56aa5dedb475529e75ce73c092ca0898\"\u003e\u003ccode\u003eb4bdd09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/818\"\u003e#818\u003c/a\u003e from dasm/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/5d85c61998692643dd9d17e05d2646e06ce391e8\"\u003e\u003ccode\u003e5d85c61\u003c/code\u003e\u003c/a\u003e Fix IPV6 regex used to check redirect_uri\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/e514826eea15f2b62bbc13da407b71552ef5ff4c\"\u003e\u003ccode\u003ee514826\u003c/code\u003e\u003c/a\u003e Add check of performance of ipv6 check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/0adbbe10ed8ef822d1c780987fffc56670ce3f9f\"\u003e\u003ccode\u003e0adbbe1\u003c/code\u003e\u003c/a\u003e docs: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6569ec3c062be7268f4a17f5a371aa29f1bcfa4a\"\u003e\u003ccode\u003e6569ec3\u003c/code\u003e\u003c/a\u003e docs: Fix a few typos\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.1.1...v3.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.26.0 to 2.32.4\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.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.3\u003c/h2\u003e\n\u003ch2\u003e2.32.3 (2024-05-29)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug breaking the ability to specify custom SSLContexts in sub-classes of\nHTTPAdapter. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6716\"\u003e#6716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed issue where Requests started failing to run on Python versions compiled\nwithout the \u003ccode\u003essl\u003c/code\u003e module. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6724\"\u003e#6724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.2\u003c/h2\u003e\n\u003ch2\u003e2.32.2 (2024-05-21)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTo provide a more stable migration for custom HTTPAdapters impacted\nby the CVE changes in 2.32.0, we've renamed \u003ccode\u003e_get_connection\u003c/code\u003e to\na new public API, \u003ccode\u003eget_connection_with_tls_context\u003c/code\u003e. Existing custom\nHTTPAdapters will need to migrate their code to use this new API.\n\u003ccode\u003eget_connection\u003c/code\u003e is considered deprecated in all versions of Requests\u0026gt;=2.32.0.\u003c/p\u003e\n\u003cp\u003eA minimal (2-line) example has been provided in the linked PR to ease\nmigration, but we strongly urge users to evaluate if their custom adapter\nis subject to the same issue described in CVE-2024-35195. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6710\"\u003e#6710\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.1\u003c/h2\u003e\n\u003ch2\u003e2.32.1 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing test certs to the sdist distributed on PyPI.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.0\u003c/h2\u003e\n\u003cp\u003e2.32.0 (2024-05-20)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.3 (2024-05-29)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug breaking the ability to specify custom SSLContexts in sub-classes of\nHTTPAdapter. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6716\"\u003e#6716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed issue where Requests started failing to run on Python versions compiled\nwithout the \u003ccode\u003essl\u003c/code\u003e module. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6724\"\u003e#6724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.2 (2024-05-21)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTo provide a more stable migration for custom HTTPAdapters impacted\nby the CVE changes in 2.32.0, we've renamed \u003ccode\u003e_get_connection\u003c/code\u003e to\na new public API, \u003ccode\u003eget_connection_with_tls_context\u003c/code\u003e. Existing custom\nHTTPAdapters will need to migrate their code to use this new API.\n\u003ccode\u003eget_connection\u003c/code\u003e is considered deprecated in all versions of Requests\u0026gt;=2.32.0.\u003c/p\u003e\n\u003cp\u003eA minimal (2-line) example has been provided in the linked PR to ease\nmigration, but we strongly urge users to evaluate if their custom adapter\nis subject to the same issue described in CVE-2024-35195. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6710\"\u003e#6710\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.1 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing test certs to the sdist distributed on PyPI.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.0 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\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/psf/requests/commit/021dc729f0b71a3030cefdbec7fb57a0e80a6cfd\"\u003e\u003ccode\u003e021dc72\u003c/code\u003e\u003c/a\u003e Polish up release tooling for last manual release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/821770e822a20a21b207b3907ea83878bda1d396\"\u003e\u003ccode\u003e821770e\u003c/code\u003e\u003c/a\u003e Bump version and add release notes for v2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/59f8aa2adf1d3d06bcbf7ce6b13743a1639a5401\"\u003e\u003ccode\u003e59f8aa2\u003c/code\u003e\u003c/a\u003e Add netrc file search information to authentication documentation (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6876\"\u003e#6876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5b4b64c3467fd7a3c03f91ee641aaa348b6bed3b\"\u003e\u003ccode\u003e5b4b64c\u003c/code\u003e\u003c/a\u003e Add more tests to prevent regression of CVE 2024 47081\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7bc45877a86192af77645e156eb3744f95b47dae\"\u003e\u003ccode\u003e7bc4587\u003c/code\u003e\u003c/a\u003e Add new test to check netrc auth leak (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6962\"\u003e#6962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/96ba401c1296ab1dda74a2365ef36d88f7d144ef\"\u003e\u003ccode\u003e96ba401\u003c/code\u003e\u003c/a\u003e Only use hostname to do netrc lookup instead of netloc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7341690e842a23cf18ded0abd9229765fa88c4e2\"\u003e\u003ccode\u003e7341690\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6951\"\u003e#6951\u003c/a\u003e from tswast/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6716d7c9f29df636643fa2489f98890216525cb0\"\u003e\u003ccode\u003e6716d7c\u003c/code\u003e\u003c/a\u003e remove links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a7e1c745dc23c18e836febd672416ed0c5d8d8ae\"\u003e\u003ccode\u003ea7e1c74\u003c/code\u003e\u003c/a\u003e Update docs/conf.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/c799b8167a13416833ad3b4f3298261a477e826f\"\u003e\u003ccode\u003ec799b81\u003c/code\u003e\u003c/a\u003e docs: fix dead links to kenreitz.org\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.26.0...v2.32.4\"\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\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/Jokerman890/PentestGPT/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/Jokerman890/PentestGPT/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jokerman890%2FPentestGPT/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"},{"uuid":"3961673930","node_id":"PR_kwDORTuhwc7E0C-r","number":75,"state":"open","title":"Bump oauthlib from 3.2.2 to 3.3.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-19T08:41:59.000Z","updated_at":"2026-02-19T08:42:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":null,"ecosystem":"pip"},"body":"Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.2.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee also CHANGELOG.md\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse proper SPDX identifier by \u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade GitHub Actions and make bandit, codespell, and pytest mandatory by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/835\"\u003eoauthlib/oauthlib#835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOAuth2Error: Allow falsy values as state by \u003ca href=\"https://github.com/TiphaineLAURENT\"\u003e\u003ccode\u003e@​TiphaineLAURENT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/815\"\u003eoauthlib/oauthlib#815\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-configured OIDC server to use OIDC flavor of Refresh Token grant type by \u003ca href=\"https://github.com/burkel24\"\u003e\u003ccode\u003e@​burkel24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/838\"\u003eoauthlib/oauthlib#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate setup.cfg to use license_files by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/839\"\u003eoauthlib/oauthlib#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure expires_at is always int by \u003ca href=\"https://github.com/sindrig\"\u003e\u003ccode\u003e@​sindrig\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/828\"\u003eoauthlib/oauthlib#828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecreate security policy by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/831\"\u003eoauthlib/oauthlib#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix failing GitHub Action lint_python.yml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/854\"\u003eoauthlib/oauthlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/855\"\u003eoauthlib/oauthlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd classifier for Python 3.11 by \u003ca href=\"https://github.com/eseifert\"\u003e\u003ccode\u003e@​eseifert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/840\"\u003eoauthlib/oauthlib#840\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove from Travis to GitHub Actions CI by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/834\"\u003eoauthlib/oauthlib#834\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/859\"\u003eoauthlib/oauthlib#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Only attempt upload for upstream by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/858\"\u003eoauthlib/oauthlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/861\"\u003eoauthlib/oauthlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003erequest.client_id\u003c/code\u003e is set during Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/853\"\u003eoauthlib/oauthlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTox use ruff by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/864\"\u003eoauthlib/oauthlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake UtilsTests.test_filter_params Python 3.13+ compatible by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/866\"\u003eoauthlib/oauthlib#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate dependency-review.yml by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/850\"\u003eoauthlib/oauthlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifier by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/860\"\u003eoauthlib/oauthlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoveralls parallel is True — Turn GitHub Actions green by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/871\"\u003eoauthlib/oauthlib#871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI Errors by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/878\"\u003eoauthlib/oauthlib#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate create_code_verifier to output the proper length by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/876\"\u003eoauthlib/oauthlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the device authorization endpoint (RFC8628 section 3.1 \u0026amp; 3.2) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/881\"\u003eoauthlib/oauthlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/883\"\u003eoauthlib/oauthlib#883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow user_code to be configured for device auth flow (Device Authorization Grant) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/885\"\u003eoauthlib/oauthlib#885\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuard ui_locales.split() by \u003ca href=\"https://github.com/jaap3\"\u003e\u003ccode\u003e@​jaap3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/879\"\u003eoauthlib/oauthlib#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd DeviceCodeGrant type for device code flow(rfc8628) section 3.4 \u0026amp; 3.5  by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/889\"\u003eoauthlib/oauthlib#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDevice flow: Pass verification_uri_complete to endpoint + pass Server kwargs to DeviceCodeGrant to allow validators to be setup with more flexibility by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/891\"\u003eoauthlib/oauthlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code verifier regex by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/893\"\u003eoauthlib/oauthlib#893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove generic classifier by \u003ca href=\"https://github.com/EvertonSA\"\u003e\u003ccode\u003e@​EvertonSA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/895\"\u003eoauthlib/oauthlib#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add django-allauth to available options by \u003ca href=\"https://github.com/pennersr\"\u003e\u003ccode\u003e@​pennersr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/902\"\u003eoauthlib/oauthlib#902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle expires_at with best effort basis by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/900\"\u003eoauthlib/oauthlib#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e3.3.0 release by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/898\"\u003eoauthlib/oauthlib#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=oauthlib\u0026package-manager=pip\u0026previous-version=3.2.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/bhavikpatel/geonode_nepal_ithari/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhavikpatel%2Fgeonode_nepal_ithari/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"},{"uuid":"3881487268","node_id":"PR_kwDOQ1Ry-M7Ar_8i","number":9,"state":"closed","title":"Bump oauthlib from 3.2.2 to 3.3.1 in /server","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-02T08:07:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T07:48:19.000Z","updated_at":"2026-03-02T08:08:01.000Z","time_to_close":2506780,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":"/server","ecosystem":"pip"},"body":"Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.2.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee also CHANGELOG.md\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse proper SPDX identifier by \u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade GitHub Actions and make bandit, codespell, and pytest mandatory by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/835\"\u003eoauthlib/oauthlib#835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOAuth2Error: Allow falsy values as state by \u003ca href=\"https://github.com/TiphaineLAURENT\"\u003e\u003ccode\u003e@​TiphaineLAURENT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/815\"\u003eoauthlib/oauthlib#815\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-configured OIDC server to use OIDC flavor of Refresh Token grant type by \u003ca href=\"https://github.com/burkel24\"\u003e\u003ccode\u003e@​burkel24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/838\"\u003eoauthlib/oauthlib#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate setup.cfg to use license_files by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/839\"\u003eoauthlib/oauthlib#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure expires_at is always int by \u003ca href=\"https://github.com/sindrig\"\u003e\u003ccode\u003e@​sindrig\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/828\"\u003eoauthlib/oauthlib#828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecreate security policy by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/831\"\u003eoauthlib/oauthlib#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix failing GitHub Action lint_python.yml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/854\"\u003eoauthlib/oauthlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/855\"\u003eoauthlib/oauthlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd classifier for Python 3.11 by \u003ca href=\"https://github.com/eseifert\"\u003e\u003ccode\u003e@​eseifert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/840\"\u003eoauthlib/oauthlib#840\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove from Travis to GitHub Actions CI by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/834\"\u003eoauthlib/oauthlib#834\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/859\"\u003eoauthlib/oauthlib#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Only attempt upload for upstream by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/858\"\u003eoauthlib/oauthlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/861\"\u003eoauthlib/oauthlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003erequest.client_id\u003c/code\u003e is set during Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/853\"\u003eoauthlib/oauthlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTox use ruff by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/864\"\u003eoauthlib/oauthlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake UtilsTests.test_filter_params Python 3.13+ compatible by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/866\"\u003eoauthlib/oauthlib#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate dependency-review.yml by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/850\"\u003eoauthlib/oauthlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifier by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/860\"\u003eoauthlib/oauthlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoveralls parallel is True — Turn GitHub Actions green by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/871\"\u003eoauthlib/oauthlib#871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI Errors by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/878\"\u003eoauthlib/oauthlib#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate create_code_verifier to output the proper length by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/876\"\u003eoauthlib/oauthlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the device authorization endpoint (RFC8628 section 3.1 \u0026amp; 3.2) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/881\"\u003eoauthlib/oauthlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/883\"\u003eoauthlib/oauthlib#883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow user_code to be configured for device auth flow (Device Authorization Grant) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/885\"\u003eoauthlib/oauthlib#885\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuard ui_locales.split() by \u003ca href=\"https://github.com/jaap3\"\u003e\u003ccode\u003e@​jaap3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/879\"\u003eoauthlib/oauthlib#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd DeviceCodeGrant type for device code flow(rfc8628) section 3.4 \u0026amp; 3.5  by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/889\"\u003eoauthlib/oauthlib#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDevice flow: Pass verification_uri_complete to endpoint + pass Server kwargs to DeviceCodeGrant to allow validators to be setup with more flexibility by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/891\"\u003eoauthlib/oauthlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code verifier regex by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/893\"\u003eoauthlib/oauthlib#893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove generic classifier by \u003ca href=\"https://github.com/EvertonSA\"\u003e\u003ccode\u003e@​EvertonSA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/895\"\u003eoauthlib/oauthlib#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add django-allauth to available options by \u003ca href=\"https://github.com/pennersr\"\u003e\u003ccode\u003e@​pennersr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/902\"\u003eoauthlib/oauthlib#902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle expires_at with best effort basis by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/900\"\u003eoauthlib/oauthlib#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e3.3.0 release by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/898\"\u003eoauthlib/oauthlib#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=oauthlib\u0026package-manager=pip\u0026previous-version=3.2.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/priiyanshuraj/fitHub/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/priiyanshuraj%2FfitHub/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"},{"uuid":"3827610593","node_id":"PR_kwDOO7JJJ8695mVs","number":54,"state":"open","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-19T01:08:56.000Z","updated_at":"2026-02-02T01:11:45.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.47.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.26","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.14.0"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.47.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.1.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.14.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.26` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.36.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.14.0` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.13` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.1\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.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged all functions currently raising the private \u003ccode\u003eNoCurrentAsyncBackend\u003c/code\u003e exception (since v4.12.0) to instead raise the public \u003ccode\u003eNoEventLoopError\u003c/code\u003e exception (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with instance methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/a0dccbd78d75886247ae7846b460fd390cc94fbd\"\u003e\u003ccode\u003ea0dccbd\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e1121a735c977c00c18b3a581d28daf83a279833\"\u003e\u003ccode\u003ee1121a7\u003c/code\u003e\u003c/a\u003e Enabled tests for the 4.12.x branch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/69ab43e549517ce554f84365fed9da90e806c303\"\u003e\u003ccode\u003e69ab43e\u003c/code\u003e\u003c/a\u003e Fixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4f4b33ed56edd1bc4785a368a103ad8138730d91\"\u003e\u003ccode\u003e4f4b33e\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eBlockingPortal.__new__\u003c/code\u003e hack (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/af17d89b80ebbd526215e2dbd025b284730aaa3f\"\u003e\u003ccode\u003eaf17d89\u003c/code\u003e\u003c/a\u003e Replaced the NoCurrentAsyncBackend exception with NoEventLoopError (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4310264312a2e86e792481bdb05bdb381678a6b5\"\u003e\u003ccode\u003e4310264\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0cc6723ba5a2fdaa98a24852d3681c4ed99b8863\"\u003e\u003ccode\u003e0cc6723\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enco...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/54","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/54","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/54/packages"},{"uuid":"3779809235","node_id":"PR_kwDOO7JJJ867ctOq","number":52,"state":"closed","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-13T04:41:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-05T00:24:42.000Z","updated_at":"2026-01-13T04:41:37.000Z","time_to_close":706614,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.2","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.21","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.2` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.0.2` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.21` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/52","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/52","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/52/packages"},{"uuid":"3774361274","node_id":"PR_kwDOEsqFD867L5_h","number":6100,"state":"closed","title":"chore(deps): bump oauthlib from 3.2.2 to 3.3.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-02T16:28:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-01T09:17:32.000Z","updated_at":"2026-01-02T16:28:34.000Z","time_to_close":112254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":null,"ecosystem":"pip"},"body":"Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.2.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee also CHANGELOG.md\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse proper SPDX identifier by \u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade GitHub Actions and make bandit, codespell, and pytest mandatory by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/835\"\u003eoauthlib/oauthlib#835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOAuth2Error: Allow falsy values as state by \u003ca href=\"https://github.com/TiphaineLAURENT\"\u003e\u003ccode\u003e@​TiphaineLAURENT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/815\"\u003eoauthlib/oauthlib#815\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-configured OIDC server to use OIDC flavor of Refresh Token grant type by \u003ca href=\"https://github.com/burkel24\"\u003e\u003ccode\u003e@​burkel24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/838\"\u003eoauthlib/oauthlib#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate setup.cfg to use license_files by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/839\"\u003eoauthlib/oauthlib#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure expires_at is always int by \u003ca href=\"https://github.com/sindrig\"\u003e\u003ccode\u003e@​sindrig\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/828\"\u003eoauthlib/oauthlib#828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecreate security policy by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/831\"\u003eoauthlib/oauthlib#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix failing GitHub Action lint_python.yml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/854\"\u003eoauthlib/oauthlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/855\"\u003eoauthlib/oauthlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd classifier for Python 3.11 by \u003ca href=\"https://github.com/eseifert\"\u003e\u003ccode\u003e@​eseifert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/840\"\u003eoauthlib/oauthlib#840\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove from Travis to GitHub Actions CI by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/834\"\u003eoauthlib/oauthlib#834\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/859\"\u003eoauthlib/oauthlib#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Only attempt upload for upstream by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/858\"\u003eoauthlib/oauthlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/861\"\u003eoauthlib/oauthlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003erequest.client_id\u003c/code\u003e is set during Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/853\"\u003eoauthlib/oauthlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTox use ruff by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/864\"\u003eoauthlib/oauthlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake UtilsTests.test_filter_params Python 3.13+ compatible by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/866\"\u003eoauthlib/oauthlib#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate dependency-review.yml by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/850\"\u003eoauthlib/oauthlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifier by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/860\"\u003eoauthlib/oauthlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoveralls parallel is True — Turn GitHub Actions green by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/871\"\u003eoauthlib/oauthlib#871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI Errors by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/878\"\u003eoauthlib/oauthlib#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate create_code_verifier to output the proper length by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/876\"\u003eoauthlib/oauthlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the device authorization endpoint (RFC8628 section 3.1 \u0026amp; 3.2) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/881\"\u003eoauthlib/oauthlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/883\"\u003eoauthlib/oauthlib#883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow user_code to be configured for device auth flow (Device Authorization Grant) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/885\"\u003eoauthlib/oauthlib#885\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuard ui_locales.split() by \u003ca href=\"https://github.com/jaap3\"\u003e\u003ccode\u003e@​jaap3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/879\"\u003eoauthlib/oauthlib#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd DeviceCodeGrant type for device code flow(rfc8628) section 3.4 \u0026amp; 3.5  by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/889\"\u003eoauthlib/oauthlib#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDevice flow: Pass verification_uri_complete to endpoint + pass Server kwargs to DeviceCodeGrant to allow validators to be setup with more flexibility by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/891\"\u003eoauthlib/oauthlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code verifier regex by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/893\"\u003eoauthlib/oauthlib#893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove generic classifier by \u003ca href=\"https://github.com/EvertonSA\"\u003e\u003ccode\u003e@​EvertonSA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/895\"\u003eoauthlib/oauthlib#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add django-allauth to available options by \u003ca href=\"https://github.com/pennersr\"\u003e\u003ccode\u003e@​pennersr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/902\"\u003eoauthlib/oauthlib#902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle expires_at with best effort basis by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/900\"\u003eoauthlib/oauthlib#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e3.3.0 release by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/898\"\u003eoauthlib/oauthlib#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=oauthlib\u0026package-manager=uv\u0026previous-version=3.2.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/betagouv/ma-cantine/pull/6100","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/betagouv%2Fma-cantine/issues/6100","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6100/packages"},{"uuid":"3761179744","node_id":"PR_kwDOO7JJJ866hgPU","number":51,"state":"closed","title":"build(deps): bump the python group across 1 directory with 61 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-05T00:21:18.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-25T00:21:31.000Z","updated_at":"2026-01-05T00:21:19.000Z","time_to_close":950387,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":61,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.18","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.0","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 61 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.1` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.0.2` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.18` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu ...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/51","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/51","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/51/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":"3745411269","node_id":"PR_kwDOO7JJJ865tr1O","number":50,"state":"closed","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-25T00:18:53.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-19T00:24:10.000Z","updated_at":"2025-12-25T00:18:55.000Z","time_to_close":518083,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.4","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.18","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.0","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.1` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.4` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.18` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framew...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/50","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/50","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/50/packages"},{"uuid":"3678790695","node_id":"PR_kwDOO7JJJ862Opn2","number":49,"state":"closed","title":"build(deps): bump the python group across 1 directory with 61 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-19T00:21:07.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T01:07:54.000Z","updated_at":"2025-12-19T00:21:09.000Z","time_to_close":1552393,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":61,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.43.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.1","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.0","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.4","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.11.14.15","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.13","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.0","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.13"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.12.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 61 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.43.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.1` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.0` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.4` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.11.14.15` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.13` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.13` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.7` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.12.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"},{"uuid":"3658802881","node_id":"PR_kwDOFCxEgM61MamF","number":377,"state":"closed","title":"Bump oauthlib from 3.2.2 to 3.3.1 in /app","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2025-11-25T10:57:43.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-24T13:00:53.000Z","updated_at":"2025-11-25T10:57:44.000Z","time_to_close":79010,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":"/app","ecosystem":"pip"},"body":"Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.2.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee also CHANGELOG.md\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse proper SPDX identifier by \u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade GitHub Actions and make bandit, codespell, and pytest mandatory by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/835\"\u003eoauthlib/oauthlib#835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOAuth2Error: Allow falsy values as state by \u003ca href=\"https://github.com/TiphaineLAURENT\"\u003e\u003ccode\u003e@​TiphaineLAURENT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/815\"\u003eoauthlib/oauthlib#815\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-configured OIDC server to use OIDC flavor of Refresh Token grant type by \u003ca href=\"https://github.com/burkel24\"\u003e\u003ccode\u003e@​burkel24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/838\"\u003eoauthlib/oauthlib#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate setup.cfg to use license_files by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/839\"\u003eoauthlib/oauthlib#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure expires_at is always int by \u003ca href=\"https://github.com/sindrig\"\u003e\u003ccode\u003e@​sindrig\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/828\"\u003eoauthlib/oauthlib#828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecreate security policy by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/831\"\u003eoauthlib/oauthlib#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix failing GitHub Action lint_python.yml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/854\"\u003eoauthlib/oauthlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/855\"\u003eoauthlib/oauthlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd classifier for Python 3.11 by \u003ca href=\"https://github.com/eseifert\"\u003e\u003ccode\u003e@​eseifert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/840\"\u003eoauthlib/oauthlib#840\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove from Travis to GitHub Actions CI by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/834\"\u003eoauthlib/oauthlib#834\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/859\"\u003eoauthlib/oauthlib#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Only attempt upload for upstream by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/858\"\u003eoauthlib/oauthlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/861\"\u003eoauthlib/oauthlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003erequest.client_id\u003c/code\u003e is set during Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/853\"\u003eoauthlib/oauthlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTox use ruff by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/864\"\u003eoauthlib/oauthlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake UtilsTests.test_filter_params Python 3.13+ compatible by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/866\"\u003eoauthlib/oauthlib#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate dependency-review.yml by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/850\"\u003eoauthlib/oauthlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifier by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/860\"\u003eoauthlib/oauthlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoveralls parallel is True — Turn GitHub Actions green by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/871\"\u003eoauthlib/oauthlib#871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI Errors by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/878\"\u003eoauthlib/oauthlib#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate create_code_verifier to output the proper length by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/876\"\u003eoauthlib/oauthlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the device authorization endpoint (RFC8628 section 3.1 \u0026amp; 3.2) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/881\"\u003eoauthlib/oauthlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/883\"\u003eoauthlib/oauthlib#883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow user_code to be configured for device auth flow (Device Authorization Grant) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/885\"\u003eoauthlib/oauthlib#885\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuard ui_locales.split() by \u003ca href=\"https://github.com/jaap3\"\u003e\u003ccode\u003e@​jaap3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/879\"\u003eoauthlib/oauthlib#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd DeviceCodeGrant type for device code flow(rfc8628) section 3.4 \u0026amp; 3.5  by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/889\"\u003eoauthlib/oauthlib#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDevice flow: Pass verification_uri_complete to endpoint + pass Server kwargs to DeviceCodeGrant to allow validators to be setup with more flexibility by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/891\"\u003eoauthlib/oauthlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code verifier regex by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/893\"\u003eoauthlib/oauthlib#893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove generic classifier by \u003ca href=\"https://github.com/EvertonSA\"\u003e\u003ccode\u003e@​EvertonSA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/895\"\u003eoauthlib/oauthlib#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add django-allauth to available options by \u003ca href=\"https://github.com/pennersr\"\u003e\u003ccode\u003e@​pennersr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/902\"\u003eoauthlib/oauthlib#902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle expires_at with best effort basis by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/900\"\u003eoauthlib/oauthlib#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e3.3.0 release by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/898\"\u003eoauthlib/oauthlib#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=oauthlib\u0026package-manager=pip\u0026previous-version=3.2.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/mmuyakwa/Twitter-Replies/pull/377","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmuyakwa%2FTwitter-Replies/issues/377","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/377/packages"},{"uuid":"3635583599","node_id":"PR_kwDOO7JJJ86z-f6q","number":47,"state":"closed","title":"build(deps): bump the python group across 1 directory with 58 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-28T00:21:10.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-18T00:29:16.000Z","updated_at":"2025-11-28T00:21:12.000Z","time_to_close":863514,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":58,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.10.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.43.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.15.1","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.11.14.15","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.10","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.0"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.12"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.11.3","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.4.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 58 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.10.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.43.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.15.1` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.11.14.15` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.10` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.0` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.12` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.5` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.11.3` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.4.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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\u003eAdded support for asyncio's \u003ccode\u003etask call graphs\u003c/code\u003e_ on Python 3.14 and later when using\nAnyIO's task groups\n(\u003ccode\u003e[#1025](https://github.com/agronholm/anyio/issues/1025) \u0026lt;https://github.com/agronholm/anyio/pull/1025\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module\n(\u003ccode\u003e[#1001](https://github.com/agronholm/anyio/issues/1001) \u0026lt;https://github.com/agronholm/anyio/pull/1001\u0026gt;\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\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e\n(\u003ccode\u003e[#1003](https://github.com/agronholm/anyio/issues/1003) \u0026lt;https://github.com/agronholm/anyio/pull/1003\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.)\n(\u003ccode\u003e[#1009](https://github.com/agronholm/anyio/issues/1009) \u0026lt;https://github.com/agronholm/anyio/pull/1009\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero\n(\u003ccode\u003e[#1019](https://github.com/agronholm/anyio/issues/1019) \u0026lt;https://github.com/agronholm/anyio/pull/1019\u0026gt;\u003c/code\u003e_; requires Python 3.10 or\nlater when using Trio)\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\nfunction (\u003ccode\u003e[#1021](https://github.com/agronholm/anyio/issues/1021) \u0026lt;https://github.com/agronholm/anyio/pull/1021\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in\nsuch cases (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_; PR by\n\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\n(\u003ccode\u003e[#1002](https://github.com/agronholm/anyio/issues/1002) \u0026lt;https://github.com/agronholm/anyio/issues/1002\u0026gt;\u003c/code\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\n\u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function\n(\u003ccode\u003e[#1011](https://github.com/agronholm/anyio/issues/1011) \u0026lt;https://github.com/agronholm/anyio/issues/1011\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _task call graphs: \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003ehttps://docs.python.org/3/library/asyncio-graph.html\u003c/a\u003e\n.. _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\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django d...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/47","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/47","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/47/packages"},{"uuid":"3598149320","node_id":"PR_kwDOO7JJJ86yBafF","number":44,"state":"closed","title":"build(deps): bump the python group across 1 directory with 57 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-10T00:40:59.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-07T00:31:25.000Z","updated_at":"2025-11-10T00:41:01.000Z","time_to_close":259774,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":57,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.10.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.43.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.15.1","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.7","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.0"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.12"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.4","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.11.0","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 57 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.10.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.43.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.15.1` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.7` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.0` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.12` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.4` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.11.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module\n(\u003ccode\u003e[#1001](https://github.com/agronholm/anyio/issues/1001) \u0026lt;https://github.com/agronholm/anyio/pull/1001\u0026gt;\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\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.)\n(\u003ccode\u003e[#1009](https://github.com/agronholm/anyio/issues/1009) \u0026lt;https://github.com/agronholm/anyio/pull/1009\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero\n(\u003ccode\u003e[#1019](https://github.com/agronholm/anyio/issues/1019) \u0026lt;https://github.com/agronholm/anyio/pull/1019\u0026gt;\u003c/code\u003e_; requires Python 3.10 or\nlater when using Trio)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in\nsuch cases (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_; PR by\n\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\n(\u003ccode\u003e[#1002](https://github.com/agronholm/anyio/issues/1002) \u0026lt;https://github.com/agronholm/anyio/issues/1002\u0026gt;\u003c/code\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\n\u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function\n(\u003ccode\u003e[#1011](https://github.com/agronholm/anyio/issues/1011) \u0026lt;https://github.com/agronholm/anyio/issues/1011\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\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\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 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.01.31...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.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e ...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/44","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/44","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/44/packages"},{"uuid":"3557912321","node_id":"PR_kwDOBUbV_86v9Ani","number":431,"state":"closed","title":"Update oauthlib requirement from ==3.2.* to \u003e=3.2,\u003c3.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-02T20:48:10.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-27T17:47:15.000Z","updated_at":"2025-12-02T20:48:18.000Z","time_to_close":3121255,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"oauthlib","old_version":"==3.2.*","new_version":"\u003e=3.2,\u003c3.4","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [oauthlib](https://github.com/oauthlib/oauthlib) 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/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.2 (2022-10-17)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2022-36087\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.1 (2022-09-09)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/803\"\u003e#803\u003c/a\u003e: Metadata endpoint support of non-HTTPS\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth1.0:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/818\"\u003e#818\u003c/a\u003e: Allow IPv6 being parsed by signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved and fixed documentation warnings.\u003c/li\u003e\n\u003cli\u003eCosmetic changes based on isort\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.0 (2022-01-29)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\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/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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\n\n\u003e **Note**\n\u003e Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n","html_url":"https://github.com/fossasia/eventyay-talk/pull/431","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossasia%2Feventyay-talk/issues/431","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/431/packages"},{"uuid":"3544957462","node_id":"PR_kwDOObfdnc6vR8IL","number":41,"state":"closed","title":"Bump the python group across 1 directory with 92 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-03T14:48:02.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-23T14:29:31.000Z","updated_at":"2025-11-03T14:48:03.000Z","time_to_close":951511,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":92,"packages":[{"name":"absl-py","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/abseil/abseil-py"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.10.0","repository_url":"https://github.com/django/asgiref"},{"name":"billiard","old_version":"4.2.1","new_version":"4.2.2","repository_url":"https://github.com/celery/billiard"},{"name":"bitarray","old_version":"3.0.0","new_version":"3.7.2","repository_url":"https://github.com/ilanschnell/bitarray"},{"name":"bitstring","old_version":"4.3.0","new_version":"4.3.1","repository_url":"https://github.com/scott-griffiths/bitstring"},{"name":"blessed","old_version":"1.20.0","new_version":"1.22.0","repository_url":"https://github.com/jquast/blessed"},{"name":"celery","old_version":"5.4.0","new_version":"5.5.3","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.0","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"comm","old_version":"0.2.2","new_version":"0.2.3","repository_url":"https://github.com/ipython/comm"},{"name":"contourpy","old_version":"1.2.0","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"debugpy","old_version":"1.8.7","new_version":"1.8.17","repository_url":"https://github.com/microsoft/debugpy"},{"name":"decorator","old_version":"5.1.1","new_version":"5.2.1","repository_url":"https://github.com/micheles/decorator"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"django","old_version":"5.1.5","new_version":"5.2.7","repository_url":"https://github.com/django/django"},{"name":"django-celery","old_version":"3.1.17","new_version":"3.3.1","repository_url":"https://github.com/celery/django-celery"},{"name":"ecdsa","old_version":"0.19.0","new_version":"0.19.1","repository_url":"https://github.com/tlsfuzzer/python-ecdsa"},{"name":"executing","old_version":"2.1.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"filelock","old_version":"3.17.0","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.47.0","new_version":"4.60.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"grpcio","old_version":"1.67.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"h5py","old_version":"3.12.1","new_version":"3.15.1","repository_url":"https://github.com/h5py/h5py"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"inquirer","old_version":"3.2.4","new_version":"3.4.1","repository_url":"https://github.com/magmax/python-inquirer"},{"name":"jedi","old_version":"0.19.1","new_version":"0.19.2","repository_url":"https://github.com/davidhalter/jedi"},{"name":"jinxed","old_version":"1.2.1","new_version":"1.3.0","repository_url":"https://github.com/Rockhopper-Technologies/jinxed"},{"name":"joblib","old_version":"1.3.2","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jupyter-core","old_version":"5.7.2","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"keras","old_version":"3.6.0","new_version":"3.11.3","repository_url":"https://github.com/keras-team/keras"},{"name":"kiwisolver","old_version":"1.4.5","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"kombu","old_version":"5.4.2","new_version":"5.5.4","repository_url":"https://github.com/celery/kombu"},{"name":"markdown","old_version":"3.7","new_version":"3.9","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.1","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.8.2","new_version":"3.10.7","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"ml-dtypes","old_version":"0.4.1","new_version":"0.5.3","repository_url":"https://github.com/jax-ml/ml_dtypes"},{"name":"mpi4py","old_version":"4.0.1","new_version":"4.1.1","repository_url":"https://github.com/mpi4py/mpi4py"},{"name":"namex","old_version":"0.0.8","new_version":"0.1.0"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"optree","old_version":"0.13.0","new_version":"0.17.0","repository_url":"https://github.com/metaopt/optree"},{"name":"pandas","old_version":"2.1.4","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.48","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygame","old_version":"2.6.0","new_version":"2.6.1","repository_url":"https://github.com/pygame/pygame"},{"name":"pygments","old_version":"2.18.0","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.1.1","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"readchar","old_version":"4.1.0","new_version":"4.2.1","repository_url":"https://github.com/magmax/python-readchar"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"scikit-learn","old_version":"1.3.2","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.11.4","new_version":"1.16.2","repository_url":"https://github.com/scipy/scipy"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"tensorboard","old_version":"2.17.1","new_version":"2.20.0","repository_url":"https://github.com/tensorflow/tensorboard"},{"name":"tensorflow","old_version":"2.17.0","new_version":"2.20.0","repository_url":"https://github.com/tensorflow/tensorflow"},{"name":"tensorflow-intel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/tensorflow/tensorflow"},{"name":"threadpoolctl","old_version":"3.2.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tornado","old_version":"6.4.1","new_version":"6.5.2","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"virtualenv","old_version":"20.29.1","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"},{"name":"werkzeug","old_version":"3.0.4","new_version":"3.1.3","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wheel","old_version":"0.44.0","new_version":"0.45.1","repository_url":"https://github.com/pypa/wheel"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"hiredis","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"django-celery-beat","old_version":"2.7.0","new_version":"2.8.1","repository_url":"https://github.com/celery/django-celery-beat"},{"name":"uvicorn","old_version":"0.34.0","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.7.0","new_version":"65.12.1"},{"name":"django-crispy-forms","old_version":"2.3","new_version":"2.4","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"crispy-bootstrap5","old_version":"2025.4","new_version":"2025.6","repository_url":"https://github.com/django-crispy-forms/crispy-bootstrap5"},{"name":"djangorestframework","old_version":"3.16.0","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"django-cors-headers","old_version":"4.7.0","new_version":"4.9.0","repository_url":"https://github.com/adamchainz/django-cors-headers"},{"name":"psycopg","old_version":"3.2.6","new_version":"3.2.11"},{"name":"collectfasta","old_version":"3.2.1","new_version":"3.3.1","repository_url":"https://github.com/jasongi/collectfasta"},{"name":"sentry-sdk","old_version":"2.25.1","new_version":"2.42.1","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1","repository_url":"https://github.com/anymail/django-anymail"},{"name":"watchfiles","old_version":"1.0.4","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"django-stubs","old_version":"5.1.3","new_version":"5.2.7"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"djangorestframework-stubs","old_version":"3.15.3","new_version":"3.16.5","repository_url":"https://github.com/sponsors/typeddjango"},{"name":"ruff","old_version":"0.11.4","new_version":"0.14.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.8.0","new_version":"7.11.0","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"factory-boy","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/FactoryBoy/factory_boy"},{"name":"django-extensions","old_version":"4.0","new_version":"4.1","repository_url":"https://github.com/django-extensions/django-extensions"},{"name":"django-coverage-plugin","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 92 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [absl-py](https://github.com/abseil/abseil-py) | `2.1.0` | `2.3.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.10.0` |\n| [billiard](https://github.com/celery/billiard) | `4.2.1` | `4.2.2` |\n| [bitarray](https://github.com/ilanschnell/bitarray) | `3.0.0` | `3.7.2` |\n| [bitstring](https://github.com/scott-griffiths/bitstring) | `4.3.0` | `4.3.1` |\n| [blessed](https://github.com/jquast/blessed) | `1.20.0` | `1.22.0` |\n| [celery](https://github.com/celery/celery) | `5.4.0` | `5.5.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [comm](https://github.com/ipython/comm) | `0.2.2` | `0.2.3` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.2.0` | `1.3.3` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.7` | `1.8.17` |\n| [decorator](https://github.com/micheles/decorator) | `5.1.1` | `5.2.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [django](https://github.com/django/django) | `5.1.5` | `5.2.7` |\n| [django-celery](https://github.com/celery/django-celery) | `3.1.17` | `3.3.1` |\n| [ecdsa](https://github.com/tlsfuzzer/python-ecdsa) | `0.19.0` | `0.19.1` |\n| [executing](https://github.com/alexmojaki/executing) | `2.1.0` | `2.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.17.0` | `3.20.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.47.0` | `4.60.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.67.0` | `1.76.0` |\n| [h5py](https://github.com/h5py/h5py) | `3.12.1` | `3.15.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [inquirer](https://github.com/magmax/python-inquirer) | `3.2.4` | `3.4.1` |\n| [jedi](https://github.com/davidhalter/jedi) | `0.19.1` | `0.19.2` |\n| [jinxed](https://github.com/Rockhopper-Technologies/jinxed) | `1.2.1` | `1.3.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.3.2` | `1.5.2` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.7.2` | `5.9.1` |\n| [keras](https://github.com/keras-team/keras) | `3.6.0` | `3.11.3` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.5` | `1.4.9` |\n| [kombu](https://github.com/celery/kombu) | `5.4.2` | `5.5.4` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.9` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.1` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.2` | `3.10.7` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [ml-dtypes](https://github.com/jax-ml/ml_dtypes) | `0.4.1` | `0.5.3` |\n| [mpi4py](https://github.com/mpi4py/mpi4py) | `4.0.1` | `4.1.1` |\n| namex | `0.0.8` | `0.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [optree](https://github.com/metaopt/optree) | `0.13.0` | `0.17.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.1.4` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.5.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.48` | `3.0.52` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pygame](https://github.com/pygame/pygame) | `2.6.0` | `2.6.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.19.2` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.1` | `3.2.5` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [readchar](https://github.com/magmax/python-readchar) | `4.1.0` | `4.2.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.2` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.11.4` | `1.16.2` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [tensorboard](https://github.com/tensorflow/tensorboard) | `2.17.1` | `2.20.0` |\n| [tensorflow](https://github.com/tensorflow/tensorflow) | `2.17.0` | `2.20.0` |\n| [tensorflow-intel](https://github.com/tensorflow/tensorflow) | `2.17.0` | `2.18.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.2.0` | `3.6.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.4.1` | `6.5.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.29.1` | `20.35.3` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.0.4` | `3.1.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.44.0` | `0.45.1` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.1.0` | `3.3.0` |\n| [django-celery-beat](https://github.com/celery/django-celery-beat) | `2.7.0` | `2.8.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.0` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.7.0` | `65.12.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.3` | `2.4` |\n| [crispy-bootstrap5](https://github.com/django-crispy-forms/crispy-bootstrap5) | `2025.4` | `2025.6` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.0` | `3.16.1` |\n| [django-cors-headers](https://github.com/adamchainz/django-cors-headers) | `4.7.0` | `4.9.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.6` | `3.2.11` |\n| [collectfasta](https://github.com/jasongi/collectfasta) | `3.2.1` | `3.3.1` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.25.1` | `2.42.1` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.4` | `1.1.1` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.1.3` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [djangorestframework-stubs](https://github.com/sponsors/typeddjango) | `3.15.3` | `3.16.5` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.4` | `0.14.1` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.8.0` | `7.11.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [factory-boy](https://github.com/FactoryBoy/factory_boy) | `3.3.2` | `3.3.3` |\n| [django-extensions](https://github.com/django-extensions/django-extensions) | `4.0` | `4.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.0` | `3.2.0` |\n\n\nUpdates `absl-py` from 2.1.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/abseil/abseil-py/releases\"\u003eabsl-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.1\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(cleanup) Removed leftover code supporting Python \u0026lt; 3.8, as well as other\nreferences to older Python versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(typechecking) Fixed typechecking errors that appeared under mypy release 1.16\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Add extension point for letting \u003ccode\u003eTestLoader\u003c/code\u003e specify a custom\nsharding scheme.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate package build and release process. Switched to using \u003ccode\u003epyproject.toml\u003c/code\u003e,\n\u003ccode\u003ehatch\u003c/code\u003e, and GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Added a new method \u003ccode\u003eabsltest.TestCase.assertMappingEqual\u003c/code\u003e that tests equality of Mapping objects not requiring them to be dicts. Similar to \u003ccode\u003eassertSequenceEqual\u003c/code\u003e but for mappings.\u003c/li\u003e\n\u003cli\u003e(testing) Added a new method \u003ccode\u003eabsltest.assertDictContainsSubset\u003c/code\u003e that checks that a dictionary contains a subset of keys and values. Similar to a removed method \u003ccode\u003eunittest.assertDictContainsSubset\u003c/code\u003e (existed until Python 3.11).\u003c/li\u003e\n\u003cli\u003eAdded type annotations that are compliant with MyPy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Fixed an issue where the test reporter crashes with exceptions with no string representation, starting with Python 3.11.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(The change log also includes changes in \u003ccode\u003e2.2.0\u003c/code\u003e and \u003ccode\u003e2.2.1\u003c/code\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/abseil/abseil-py/blob/main/CHANGELOG.md\"\u003eabsl-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.1 (2025-07-03)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(cleanup) Removed leftover code supporting Python \u0026lt; 3.8, as well as other\nreferences to older Python versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(typechecking) Fixed typechecking errors that appeared under mypy release 1.16\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.0 (2025-05-26)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Add extension point for letting \u003ccode\u003eTestLoader\u003c/code\u003e specify a custom\nsharding scheme.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate package build and release process. Switched to using \u003ccode\u003epyproject.toml\u003c/code\u003e,\n\u003ccode\u003ehatch\u003c/code\u003e, and GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.2 (2025-04-03)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Added a new method \u003ccode\u003eabsltest.TestCase.assertMappingEqual\u003c/code\u003e that\ntests equality of Mapping objects not requiring them to be dicts. Similar to\n\u003ccode\u003eassertSequenceEqual\u003c/code\u003e but for mappings.\u003c/li\u003e\n\u003cli\u003e(testing) Added a new method \u003ccode\u003eabsltest.assertDictContainsSubset\u003c/code\u003e that checks\nthat a dictionary contains a subset of keys and values. Similar to a removed\nmethod \u003ccode\u003eunittest.assertDictContainsSubset\u003c/code\u003e (existed until Python 3.11).\u003c/li\u003e\n\u003cli\u003eAdded type annotations that are compliant with MyPy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Fixed an issue where the test reporter crashes with exceptions with\nno string representation, starting with Python 3.11.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/bdad52d90492be48ed535f7d6369c406860d547a\"\u003e\u003ccode\u003ebdad52d\u003c/code\u003e\u003c/a\u003e Release Abseil-py 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/a2d05830f40abf992f4a7e9716cf518f64ec0ce4\"\u003e\u003ccode\u003ea2d0583\u003c/code\u003e\u003c/a\u003e Clean up some references to older Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/55c8f4d1a83481ef4d62fb38b043844580169886\"\u003e\u003ccode\u003e55c8f4d\u003c/code\u003e\u003c/a\u003e Fix typechecking errors that appeared under mypy release 1.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/aafb0d89d21f38e9eb200eb375db3473678a98dc\"\u003e\u003ccode\u003eaafb0d8\u003c/code\u003e\u003c/a\u003e Add useful links to the abseil-py public files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/2f11045b6be5acf6ff6e1ffb40898dc83c28a609\"\u003e\u003ccode\u003e2f11045\u003c/code\u003e\u003c/a\u003e Bump absl-py version to 2.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/4d008a9658d4de49b98c64b600b0f50526c0a6f8\"\u003e\u003ccode\u003e4d008a9\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/c31c4f6cf7352fca9cd58cd26f02bcc9185badb3\"\u003e\u003ccode\u003ec31c4f6\u003c/code\u003e\u003c/a\u003e Automatize package release process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/842bf097bdf34cd08181e7c426fe5df38a3ae22c\"\u003e\u003ccode\u003e842bf09\u003c/code\u003e\u003c/a\u003e Switch to pyproject.toml + hatchling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/369ce9badbda914b7d3b975b7272e1194b419213\"\u003e\u003ccode\u003e369ce9b\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ehelp\u003c/code\u003e argument indentation in \u003ccode\u003eDEFINE_multi_enum_class\u003c/code\u003e function documen...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/71eb53dad22e5361941c31a891ec032efd079805\"\u003e\u003ccode\u003e71eb53d\u003c/code\u003e\u003c/a\u003e Add extension point for letting TestLoader specify a custom sharding scheme.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/abseil/abseil-py/compare/v2.1.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `billiard` from 4.2.1 to 4.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/releases\"\u003ebilliard's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd codespell support (config, workflow to detect/not fix) and make it fix few typos by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/416\"\u003ecelery/billiard#416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003einitial python 3.13 support by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/421\"\u003ecelery/billiard#421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCopy \u003ccode\u003ecode.co_qualname\u003c/code\u003e on Python \u0026gt;= 3.11 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/423\"\u003ecelery/billiard#423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded DeepWiki to README by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/424\"\u003ecelery/billiard#424\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the failing pre-commit.ci job by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/429\"\u003ecelery/billiard#429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGitHub Actions: Test on Python 3.14 release candidate 2 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/428\"\u003ecelery/billiard#428\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/430\"\u003ecelery/billiard#430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/431\"\u003ecelery/billiard#431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/432\"\u003ecelery/billiard#432\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/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/416\"\u003ecelery/billiard#416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/423\"\u003ecelery/billiard#423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/429\"\u003ecelery/billiard#429\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.1...v4.2.2\"\u003ehttps://github.com/celery/billiard/compare/v4.2.1...v4.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/celery/billiard/blob/main/CHANGES.txt\"\u003ebilliard's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.2 - 2025-09-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd codespell support (config, workflow to detect/not fix) and make it fix few typos\u003c/li\u003e\n\u003cli\u003einitial python 3.13 support\u003c/li\u003e\n\u003cli\u003eCopy \u003ccode\u003ecode.co_qualname\u003c/code\u003e on Python \u0026gt;= 3.11\u003c/li\u003e\n\u003cli\u003eAdded DeepWiki to README\u003c/li\u003e\n\u003cli\u003eFix the failing pre-commit.ci job\u003c/li\u003e\n\u003cli\u003eGitHub Actions: Test on Python 3.14 release candidate 2\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/0642d2e8ab6c4541a2fd6f0e08ddca50871b50c5\"\u003e\u003ccode\u003e0642d2e\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.2 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/a954b74c01561c53446cfb8eed75f2ad6e9721ee\"\u003e\u003ccode\u003ea954b74\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/431\"\u003e#431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/57123cb8f46014fabd0d86cba032059c90d03a77\"\u003e\u003ccode\u003e57123cb\u003c/code\u003e\u003c/a\u003e Keep GitHub Actions up to date with GitHub's Dependabot (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/75d195c2bd8557552a50508f74dc7678ed8ce5b5\"\u003e\u003ccode\u003e75d195c\u003c/code\u003e\u003c/a\u003e GitHub Actions: Test on Python 3.14 release candidate 2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/fe16b46b34e87960691f5e027907bc9d05bbae9e\"\u003e\u003ccode\u003efe16b46\u003c/code\u003e\u003c/a\u003e Fix the failing pre-commit.ci job (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/0b0783b0c4a5c6391e57ddba4a71eada3cca1819\"\u003e\u003ccode\u003e0b0783b\u003c/code\u003e\u003c/a\u003e Added DeepWiki to README (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/d8b2df5b23573d6f20a6f9b2b85ef45cc0eb4ddf\"\u003e\u003ccode\u003ed8b2df5\u003c/code\u003e\u003c/a\u003e Copy \u003ccode\u003ecode.co_qualname\u003c/code\u003e on Python \u0026gt;= 3.11 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/423\"\u003e#423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/c88a0b7b8aae1c761d988da67af70aed07ecb8c1\"\u003e\u003ccode\u003ec88a0b7\u003c/code\u003e\u003c/a\u003e initial python 3.13 support (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/f7810403890c7024913595e1a6a15437281ed4a5\"\u003e\u003ccode\u003ef781040\u003c/code\u003e\u003c/a\u003e Add codespell support (config, workflow to detect/not fix) and make it fix fe...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.1...v4.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bitarray` from 3.0.0 to 3.7.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ilanschnell/bitarray/blob/master/doc/changelog.rst\"\u003ebitarray's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003e3.7.2\u003c/strong\u003e (2025-10-08):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eenable \u003ccode\u003eutil.random_k()\u003c/code\u003e for all supported Python versions,\npreviously this functions required Python 3.9 or higher\u003c/li\u003e\n\u003cli\u003eadd official Python 3.14 support\u003c/li\u003e\n\u003cli\u003eupdate cibuildwheel to 3.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.7.1\u003c/strong\u003e (2025-08-28):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix type hinting for memoryviews, see \u003ccode\u003e[#241](https://github.com/ilanschnell/bitarray/issues/241) \u0026lt;https://github.com/ilanschnell/bitarray/issues/241\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003ebit-endianness \u0026lt;endianness.rst\u0026gt;\u003c/code\u003e__ documentation\u003c/li\u003e\n\u003cli\u003eimprove testing, including debug mode test for \u003ccode\u003edigit_to_int()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.7.0\u003c/strong\u003e (2025-08-24):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003eutil.gen_primes()\u003c/code\u003e, generate bitarrays in which active indices are\nprime numbers\u003c/li\u003e\n\u003cli\u003eimprove \u003ccode\u003e.buffer_info()\u003c/code\u003e to return named tuple\u003c/li\u003e\n\u003cli\u003eadd optional \u003ccode\u003emode\u003c/code\u003e argument to \u003ccode\u003eutil.sum_indices()\u003c/code\u003e to sum square of\nactive indices\u003c/li\u003e\n\u003cli\u003eimprove internal \u003ccode\u003e_sysinfo()\u003c/code\u003e to include \u003ccode\u003ePy_DEBUG\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eDubner's conjecture \u0026lt;../examples/dubner.rst\u0026gt;\u003c/code\u003e__ (in memory of Harvey\nDubner)\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003edynamically growing sieve \u0026lt;../examples/dyn_sieve.py\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.6.1\u003c/strong\u003e (2025-08-12):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd development files for statistical tests in \u003ccode\u003edevel/random/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eoptimize \u003ccode\u003eutil.sum_indices()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003efix RecursionError in \u003ccode\u003eutil.random_k()\u003c/code\u003e, see \u003ccode\u003e[#239](https://github.com/ilanschnell/bitarray/issues/239) \u0026lt;https://github.com/ilanschnell/bitarray/issues/239\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003edevel/test_sum_indices.py\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.6.0\u003c/strong\u003e (2025-07-29):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003eutil.random_k()\u003c/code\u003e, see \u003ccode\u003e[#237](https://github.com/ilanschnell/bitarray/issues/237) \u0026lt;https://github.com/ilanschnell/bitarray/issues/237\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eutil.sum_indices()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eoptimize \u003ccode\u003eutil.xor_indices()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003emove development files from \u003ccode\u003eexamples/\u003c/code\u003e to \u003ccode\u003edevel/\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.5.2\u003c/strong\u003e (2025-07-21):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eoptimize \u003ccode\u003eutil.random_p()\u003c/code\u003e by also using bitwise AND in final step\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/2ceb747941caf3fc9565b36d55f35460fc576da2\"\u003e\u003ccode\u003e2ceb747\u003c/code\u003e\u003c/a\u003e add release date - update docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/9d4e0674d453787d334f796320438ca97990241c\"\u003e\u003ccode\u003e9d4e067\u003c/code\u003e\u003c/a\u003e update changelog - skip cp314t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/0a55769cf2a482fcad57c73502327a161b5f657a\"\u003e\u003ccode\u003e0a55769\u003c/code\u003e\u003c/a\u003e update cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/0e179bb0c960a7bf904ba90cddb424902c62e681\"\u003e\u003ccode\u003e0e179bb\u003c/code\u003e\u003c/a\u003e add official Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/7e5abeab076f5fb9be54a77a154e221719df7035\"\u003e\u003ccode\u003e7e5abea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ilanschnell/bitarray/issues/243\"\u003e#243\u003c/a\u003e from DJHills/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/7667dcfae0dd87f2a61db66f0fc8e59cd8572021\"\u003e\u003ccode\u003e7667dcf\u003c/code\u003e\u003c/a\u003e Fix tiny README typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/8f3845e0143fc0e2f57c75fcf0254173ee6a0bd0\"\u003e\u003ccode\u003e8f3845e\u003c/code\u003e\u003c/a\u003e simplify test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/84c29c8ac4cfc0afb9f9e08ac5e50e605dd80018\"\u003e\u003ccode\u003e84c29c8\u003c/code\u003e\u003c/a\u003e add devel test for resize()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/1dc477d4a3e6c492e041c8418c638873744a8041\"\u003e\u003ccode\u003e1dc477d\u003c/code\u003e\u003c/a\u003e wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/db26fe89b1bcc68bd1025cfde52380f826724860\"\u003e\u003ccode\u003edb26fe8\u003c/code\u003e\u003c/a\u003e fix wording\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ilanschnell/bitarray/compare/3.0.0...3.7.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bitstring` from 4.3.0 to 4.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scott-griffiths/bitstring/releases\"\u003ebitstring's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ebitstring-4.3.1\u003c/h2\u003e\n\u003cp\u003eUpdated bitarray dependency to allow for v3.x. Issue \u003ca href=\"https://redirect.github.com/scott-griffiths/bitstring/issues/355\"\u003e#355\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/scott-griffiths/bitstring/blob/main/release_notes.md\"\u003ebitstring's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMarch 2025: version 4.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated bitarray dependency to allow for v3.x.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scott-griffiths/bitstring/commit/d5226793eca62117edd9664730cf964e6a8db4f1\"\u003e\u003ccode\u003ed522679\u003c/code\u003e\u003c/a\u003e Updating bitarray dependency to \u0026lt;4.0 to allow for recent 3.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scott-griffiths/bitstring/commit/520dd6f004960268552b0d875be7bea9735d79c0\"\u003e\u003ccode\u003e520dd6f\u003c/code\u003e\u003c/a\u003e Missing format string specifier. Bug \u003ca href=\"https://redirect.github.com/scott-griffiths/bitstring/issues/353\"\u003e#353\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scott-griffiths/bitstring/commit/1b4562b9983a5945c48215d70bcc7dabdc9d5a18\"\u003e\u003ccode\u003e1b4562b\u003c/code\u003e\u003c/a\u003e Update to release notes.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scott-griffiths/bitstring/compare/bitstring-4.3.0...bitstring-4.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `blessed` from 1.20.0 to 1.22.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jquast/blessed/releases\"\u003eblessed's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.22.0\u003c/h2\u003e\n\u003ch2\u003eMajor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePerformance improved in \u003ccode\u003eTerminal.Length\u003c/code\u003e and \u003ccode\u003eSequence.padd\u003c/code\u003e by \u003ca href=\"https://github.com/grayjk\"\u003e\u003ccode\u003e@​grayjk\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/avylove\"\u003e\u003ccode\u003e@​avylove\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/286\"\u003e#286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/287\"\u003e#287\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/289\"\u003e#289\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/291\"\u003e#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes for failing tests by \u003ca href=\"https://github.com/avylove\"\u003e\u003ccode\u003e@​avylove\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/284\"\u003e#284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse a separate job to upload coverage for older python versions by \u003ca href=\"https://github.com/avylove\"\u003e\u003ccode\u003e@​avylove\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/288\"\u003e#288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse tool \u0026quot;codespell\u0026quot; in tox 'lint' step by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/jquast\"\u003e\u003ccode\u003e@​jquast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/293\"\u003e#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin docformatter by \u003ca href=\"https://github.com/avylove\"\u003e\u003ccode\u003e@​avylove\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/292\"\u003e#292\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jquast/blessed/compare/1.21.0...1.22.0\"\u003ehttps://github.com/jquast/blessed/compare/1.21.0...1.22.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.21.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ebugfix infinite loop in method \u003ccode\u003eTerminal.wrap()\u003c/code\u003e when \u0026quot;Wide\u0026quot; characters of\nwidth 2 (East-Asian or Emoji) are used with a wrap width of 1, and a small\nperformance enhancement, \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/273\"\u003e#273\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/274\"\u003e#274\u003c/a\u003e by \u003ca href=\"https://github.com/grayjk\"\u003e\u003ccode\u003e@​grayjk\u003c/code\u003e\u003c/a\u003e, merged as \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/275\"\u003e#275\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/jquast/blessed/blob/master/docs/history.rst\"\u003eblessed's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. py:currentmodule:: blessed.terminal\u003c/p\u003e\n\u003ch1\u003eVersion History\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003enext\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnvironment values FORCE_COLOR_, CLICOLOR_FORCE_, and NO_COLOR_ overrides\n:class:\u003ccode\u003eblessed.Terminal\u003c/code\u003e argument value, \u003ccode\u003eforce_styling\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eperformance improvements in :meth:\u003ccode\u003e~Terminal.rgb_downconvert\u003c/code\u003e for 256-color\nterminals, :ghpull:\u003ccode\u003e298\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eperformance improvements to :meth:\u003ccode\u003e~Terminal.length\u003c/code\u003e and\n:meth:\u003ccode\u003e~Terminal.wrap\u003c/code\u003e via :ghpull:\u003ccode\u003e286\u003c/code\u003e, :ghpull:\u003ccode\u003e287\u003c/code\u003e, :ghpull:\u003ccode\u003e289\u003c/code\u003e, and\n:ghpull:\u003ccode\u003e291\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003espelling fixes, :ghpull:\u003ccode\u003e278\u003c/code\u003e, :ghpull:\u003ccode\u003e293\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ebugfix infinite loop in :meth:\u003ccode\u003e~Terminal.wrap\u003c/code\u003e when \u0026quot;Wide\u0026quot; characters of\nwidth 2 (East-Asian or Emoji) are used with a wrap width of 1, and a small\nperformance enhancement, :ghissue:\u003ccode\u003e273\u003c/code\u003e and :ghpull:\u003ccode\u003e274\u003c/code\u003e by :ghuser:\u003ccode\u003egrayjk\u003c/code\u003e\nmerged as :ghpull:\u003ccode\u003e275\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eintroduced :meth:\u003ccode\u003e~Terminal.get_fgcolor\u003c/code\u003e and :meth:\u003ccode\u003e~Terminal.get_bgcolor\u003c/code\u003e to query\nthe terminal for the currently set colors. :ghissue:\u003ccode\u003e237\u003c/code\u003e by :ghuser:\u003ccode\u003estefanholek\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebugfix: Copy globals dict before iterating to avoid RuntimeError in multithreaded\napplications, :ghissue:\u003ccode\u003e248\u003c/code\u003e by :ghuser:\u003ccode\u003eadamnovak\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eintroduced :meth:\u003ccode\u003e~Terminal.truncate\u003c/code\u003e to truncate a string while\nretaining the sequences, :ghissue:\u003ccode\u003e211\u003c/code\u003e by :ghuser:\u003ccode\u003efishermans-friend\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eenhancement: Add small sleep in :meth:\u003ccode\u003e~Terminal.kbhit\u003c/code\u003e on Windows\nto reduce CPU load :ghissue:\u003ccode\u003e209\u003c/code\u003e by :ghuser:\u003ccode\u003enumerlor\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eenhancement: :meth:\u003ccode\u003e~Terminal.rjust\u003c/code\u003e, :meth:\u003ccode\u003e~Terminal.ljust\u003c/code\u003e,\nand :meth:\u003ccode\u003e~Terminal.center\u003c/code\u003e now accept :class:\u003ccode\u003e~typing.SupportsIndex\u003c/code\u003e types, :ghissue:\u003ccode\u003e234\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eenhancement: When 88 colors is detected, it is now interpreted as 16 colors rather than raising\nan :exc:\u003ccode\u003eAssertionError\u003c/code\u003e, :ghissue:\u003ccode\u003e235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebugfix: Fix global variable declarations in type annotations, :ghissue:\u003ccode\u003e230\u003c/code\u003e by\n:ghuser:\u003ccode\u003emwchase\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ebugfix: :meth:\u003ccode\u003e~Terminal.split_seqs\u003c/code\u003e for some sequences\nlike \u003ccode\u003eterm.move_left(3)\u003c/code\u003e, :ghissue:\u003ccode\u003e197\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eintroduced: type annotations, :ghissue:\u003ccode\u003e192\u003c/code\u003e by :ghuser:\u003ccode\u003edlax\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003ebugfix: do not fail when \u003ccode\u003esys.stdin\u003c/code\u003e is unset, :ghissue:\u003ccode\u003e195\u003c/code\u003e by\n:ghuser:\u003ccode\u003eOlen\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003edocfix: correct \u0026quot;Bottom of the screen\u0026quot; example to use \u003ccode\u003eend=''\u003c/code\u003e and\ndocument about it in location.rst, :ghissue:\u003ccode\u003e188\u003c/code\u003e by :ghuser:\u003ccode\u003epyfisch\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/jquast/blessed/commit/6181f5ab2e3682d997a96030a3b72c09346e72f5\"\u003e\u003ccode\u003e6181f5a\u003c/code\u003e\u003c/a\u003e Set version 1.22 for release (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/17d7a9290f0239f5916607e281d12c4edcee7330\"\u003e\u003ccode\u003e17d7a92\u003c/code\u003e\u003c/a\u003e Unpin docformatter (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/292\"\u003e#292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/c53146db93c5673e56352897a075d7a18c7ca611\"\u003e\u003ccode\u003ec53146d\u003c/code\u003e\u003c/a\u003e Use tool \u0026quot;codespell\u0026quot; in tox 'lint' step (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/99cb338d9d3d5faf01938cc48f3bef3a3739f0a4\"\u003e\u003ccode\u003e99cb338\u003c/code\u003e\u003c/a\u003e Optimize Sequence.padd for non-horizontal sequences (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/4b54fd3c753a56947050f2762b33c5180461853d\"\u003e\u003ccode\u003e4b54fd3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/289\"\u003e#289\u003c/a\u003e from grayjk/perf-wrap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/f35409ecb96fd984c6a4c64e1771e029ebccbf8f\"\u003e\u003ccode\u003ef35409e\u003c/code\u003e\u003c/a\u003e wrap perf improvement when breaking long words\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/fb213bf7ab88b1c8a132ad546e8beeb913ff0dfc\"\u003e\u003ccode\u003efb213bf\u003c/code\u003e\u003c/a\u003e Optimize Sequence.padd() (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/f836ccad5fae80fad84fd919bb6963b6079999c8\"\u003e\u003ccode\u003ef836cca\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/286\"\u003e#286\u003c/a\u003e from grayjk/fix-285\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/8977680aa451173901df60931e90c42f35735b76\"\u003e\u003ccode\u003e8977680\u003c/code\u003e\u003c/a\u003e early return from Sequence.padd\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/81d5d2771818b1fcc8f8213642ab3ffe060051e9\"\u003e\u003ccode\u003e81d5d27\u003c/code\u003e\u003c/a\u003e Use a separate job to upload coverage for older python versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jquast/blessed/compare/1.20.0...1.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.4.0 to 5.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.5.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emake the tests run on python 3.13 for gcs backend by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9677\"\u003ecelery/celery#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded DeepWiki to README by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9683\"\u003ecelery/celery#9683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit redis to \u0026lt;=v5.2.1 to match Kombu by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9693\"\u003ecelery/celery#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse EX_OK instead of literal zero by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9684\"\u003ecelery/celery#9684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake wheel metadata reproducible by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9687\"\u003ecelery/celery#9687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003elet celery install from kombu dependencies for better align by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9696\"\u003ecelery/celery#9696\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix stamping documentation to clarify stamped_headers key is optional in visitor methods by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9697\"\u003ecelery/celery#9697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport apply_async without queue argument on quorum queues by \u003ca href=\"https://github.com/bityob\"\u003e\u003ccode\u003e@​bityob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9686\"\u003ecelery/celery#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated rabbitmq doc about using quorum queues with task routes by \u003ca href=\"https://github.com/bityob\"\u003e\u003ccode\u003e@​bityob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9707\"\u003ecelery/celery#9707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd: Dumper Unit Test by \u003ca href=\"https://github.com/yiyu0x\"\u003e\u003ccode\u003e@​yiyu0x\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9711\"\u003ecelery/celery#9711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd unit test for event.group_from by \u003ca href=\"https://github.com/rogerforlife\"\u003e\u003ccode\u003e@​rogerforlife\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9709\"\u003ecelery/celery#9709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: add beat_cron_starting_deadline documentation warning by \u003ca href=\"https://github.com/alirafiei75\"\u003e\u003ccode\u003e@​alirafiei75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9712\"\u003ecelery/celery#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve issue \u003ca href=\"https://redirect.github.com/celery/celery/issues/9569\"\u003e#9569\u003c/a\u003e by supporting distinct broker transport options for workers by \u003ca href=\"https://github.com/yiyu0x\"\u003e\u003ccode\u003e@​yiyu0x\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9695\"\u003ecelery/celery#9695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes issue with retry callback arguments in DelayedDelivery by \u003ca href=\"https://github.com/maccinza\"\u003e\u003ccode\u003e@​maccinza\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9708\"\u003ecelery/celery#9708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eget_exchange-unit-test by \u003ca href=\"https://github.com/rogerforlife\"\u003e\u003ccode\u003e@​rogerforlife\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9710\"\u003ecelery/celery#9710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eISSUE-9704: Update documentation of result_expires, filesystem backend is supported by \u003ca href=\"https://github.com/MattiasDC\"\u003e\u003ccode\u003e@​MattiasDC\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9716\"\u003ecelery/celery#9716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate to blacksmith ubuntu 24.04 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9717\"\u003ecelery/celery#9717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded unit tests for celery.utils.iso8601 by \u003ca href=\"https://github.com/jaiganeshs21\"\u003e\u003ccode\u003e@​jaiganeshs21\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9725\"\u003ecelery/celery#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate introduction.rst docs by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9728\"\u003ecelery/celery#9728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.5.3 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9732\"\u003ecelery/celery#9732\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/bityob\"\u003e\u003ccode\u003e@​bityob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9686\"\u003ecelery/celery#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yiyu0x\"\u003e\u003ccode\u003e@​yiyu0x\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9711\"\u003ecelery/celery#9711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rogerforlife\"\u003e\u003ccode\u003e@​rogerforlife\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9709\"\u003ecelery/celery#9709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alirafiei75\"\u003e\u003ccode\u003e@​alirafiei75\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9712\"\u003ecelery/celery#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/maccinza\"\u003e\u003ccode\u003e@​maccinza\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9708\"\u003ecelery/celery#9708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MattiasDC\"\u003e\u003ccode\u003e@​MattiasDC\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9716\"\u003ecelery/celery#9716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaiganeshs21\"\u003e\u003ccode\u003e@​jaiganeshs21\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9725\"\u003ecelery/celery#9725\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.5.2...v5.5.3\"\u003ehttps://github.com/celery/celery/compare/v5.5.2...v5.5.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.5.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculating remaining time across DST changes by \u003ca href=\"https://github.com/imrivera\"\u003e\u003ccode\u003e@​imrivera\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9669\"\u003ecelery/celery#9669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetup_logger\u003c/code\u003e from COMPAT_MODULES by \u003ca href=\"https://github.com/rconradharris\"\u003e\u003ccode\u003e@​rconradharris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9668\"\u003ecelery/celery#9668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mongodb bullet and fix github links in contributions section by \u003ca href=\"https://github.com/jabberwock404\"\u003e\u003ccode\u003e@​jabberwock404\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9672\"\u003ecelery/celery#9672\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.5.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9675\"\u003ecelery/celery#9675\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/imrivera\"\u003e\u003ccode\u003e@​imrivera\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9669\"\u003ecelery/celery#9669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rconradharris\"\u003e\u003ccode\u003e@​rconradharris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9668\"\u003ecelery/celery#9668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jabberwock404\"\u003e\u003ccode\u003e@​jabberwock404\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9672\"\u003ecelery/celery#9672\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.5.1...v5.5.2\"\u003ehttps://github.com/celery/celery/compare/v5.5.1...v5.5.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.5.1\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.5.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-06-01\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- make the tests run on python 3.13 for gcs backend ([#9677](https://github.com/celery/celery/issues/9677))\n- Added DeepWiki to README ([#9683](https://github.com/celery/celery/issues/9683))\n- Limit redis to \u0026lt;=v5.2.1 to match Kombu ([#9693](https://github.com/celery/celery/issues/9693))\n- Use EX_OK instead of literal zero ([#9684](https://github.com/celery/celery/issues/9684))\n- Make wheel metadata reproducible ([#9687](https://github.com/celery/celery/issues/9687))\n- let celery install from kombu dependencies for better align ([#9696](https://github.com/celery/celery/issues/9696))\n- Fix stamping documentation to clarify stamped_headers key is optional in visitor methods ([#9697](https://github.com/celery/celery/issues/9697))\n- Support apply_async without queue argument on quorum queues ([#9686](https://github.com/celery/celery/issues/9686))\n- Updated rabbitmq doc about using quorum queues with task routes ([#9707](https://github.com/celery/celery/issues/9707))\n- Add: Dumper Unit Test ([#9711](https://github.com/celery/celery/issues/9711))\n- Add unit test for event.group_from ([#9709](https://github.com/celery/celery/issues/9709))\n- refactor: add beat_cron_starting_deadline documentation warning ([#9712](https://github.com/celery/celery/issues/9712))\n- fix: resolve issue [#9569](https://github.com/celery/celery/issues/9569) by supporting distinct broker transport options for workers ([#9695](https://github.com/celery/celery/issues/9695))\n- Fixes issue with retry callback arguments in DelayedDelivery ([#9708](https://github.com/celery/celery/issues/9708))\n- get_exchange-unit-test ([#9710](https://github.com/celery/celery/issues/9710))\n- ISSUE-9704: Update documentation of result_expires, filesystem backend is supported ([#9716](https://github.com/celery/celery/issues/9716))\n- update to blacksmith ubuntu 24.04 ([#9717](https://github.com/celery/celery/issues/9717))\n- Added unit tests for celery.utils.iso8601 ([#9725](https://github.com/celery/celery/issues/9725))\n- Update introduction.rst docs ([#9728](https://github.com/celery/celery/issues/9728))\n- Prepare for release: v5.5.3 ([#9732](https://github.com/celery/celery/issues/9732))\n\u003cp\u003e.. _version-5.5.2:\u003c/p\u003e\n\u003ch1\u003e5.5.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-04-25\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculating remaining time across DST changes (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9669\"\u003e#9669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetup_logger\u003c/code\u003e from COMPAT_MODULES (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9668\"\u003e#9668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mongodb bullet and fix github links in contributions section (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9672\"\u003e#9672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.5.2 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9675\"\u003e#9675\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.5.1:\u003c/p\u003e\n\u003ch1\u003e5.5.1\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/celery/celery/commit/088c39c0f78b23a9cdf8d1c9e265ea64d02cfd86\"\u003e\u003ccode\u003e088c39c\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.5.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9732\"\u003e#9732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0c1c52b7c361b65c286b30b13973df741799f4ea\"\u003e\u003ccode\u003e0c1c52b\u003c/code\u003e\u003c/a\u003e Update introduction.rst docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9728\"\u003e#9728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/778b009ffbad7c7d8061a4e7cc4c4445ec541da3\"\u003e\u003ccode\u003e778b009\u003c/code\u003e\u003c/a\u003e Added unit tests for celery.utils.iso8601 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9725\"\u003e#9725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/b00c1446d809b8909c4932674c49a7659838aaa6\"\u003e\u003ccode\u003eb00c144\u003c/code\u003e\u003c/a\u003e update to blacksmith ubuntu 24.04\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5aae2ca5f455e148cd59de89907459265c5b81fc\"\u003e\u003ccode\u003e5aae2ca\u003c/code\u003e\u003c/a\u003e ISSUE-9704: Update documentation of , filesystem backend is supported if cele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/7cf9d8987017ee6414644ff7bf32756860255d2a\"\u003e\u003ccode\u003e7cf9d89\u003c/code\u003e\u003c/a\u003e get_exchange-unit-test (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9710\"\u003e#9710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/b06e53f324f0cfe2b1c98b99d7a8a158d7034dea\"\u003e\u003ccode\u003eb06e53f\u003c/code\u003e\u003c/a\u003e Fixes issue with retry callback argument types in DelayedDelivery (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9708\"\u003e#9708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/b6cab29e6932f100c9f30706ce2600ccff5e14e3\"\u003e\u003ccode\u003eb6cab29\u003c/code\u003e\u003c/a\u003e fix: resolve issue \u003ca href=\"https://redirect.github.com/celery/celery/issues/9569\"\u003e#9569\u003c/a\u003e by supporting distinct broker transport options for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5fc068cd4561ddddebaa5abdde947a90105fa59e\"\u003e\u003ccode\u003e5fc068c\u003c/code\u003e\u003c/a\u003e refactor: add beat_cron_starting_deadline documentation warning (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c7bb67f7412c61477473299ae2f251d5731be3c1\"\u003e\u003ccode\u003ec7bb67f\u003c/code\u003e\u003c/a\u003e Add unit test for event.group_from (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9709\"\u003e#9709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.4.0...v5.5.3\"\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.0 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.1\u003c/h2\u003e\n\u003ch2\u003e🚀 We're still raising awareness around HTTP/2, and HTTP/3!\u003c/h2\u003e\n\u003cp\u003eDid you know that Internet Explorer 11 shipped with an optional HTTP/2 support back in 2013? also libcurl did ship it in 2014[...]\nUsing Requests today is the rough equivalent of using EOL Windows 8!  We promptly invite Python developers to look at the first drop-in replacement for Requests, \u003ca href=\"https://github.com/jawah/niquests\"\u003enamely Niquests\u003c/a\u003e. Ship with native WebSocket, SSE, Happy Eyeballs, DNS over HTTPS, and so on[...] All of this while remaining compatible with all Requests prior plug-ins / add-ons.\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/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.0...3.4.1\"\u003e3.4.1\u003c/a\u003e (2024-12-24)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProject metadata are now stored using \u003ccode\u003epyproject.toml\u003c/code\u003e instead of \u003ccode\u003esetup.cfg\u003c/code\u003e using setuptools as the build backend.\u003c/li\u003e\n\u003cli\u003eEnforce annotation delayed loading for a simpler and consistent types in the project.\u003c/li\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.14 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\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/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....\n\n_Description has been truncated_","html_url":"https://github.com/laxmanchandrarana/lcrportfolio-django-cookiecutter/pull/41","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/laxmanchandrarana%2Flcrportfolio-django-cookiecutter/issues/41","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41/packages"},{"uuid":"2922551234","node_id":"PR_kwDOO7JJJ86uMpfC","number":41,"state":"closed","title":"build(deps): bump the python group across 1 directory with 56 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-10-17T02:03:50.715Z","updated_at":"2026-03-15T17:30:49.320Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":56,"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":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.15.1","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.3","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.37.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.12.1"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.10"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.11.0","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 56 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| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.41.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.15.1` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.3` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.37.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.12.1` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.10` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.1` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.11.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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\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\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/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 `certifi` from 2025.1.31 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.01.31...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.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/4bb46c2949fc67a1f8e74c43776833d81df471ed\"\u003e\u003ccode\u003e4bb46c2\u003c/code\u003e\u003c/a\u003e Add Kazakh(kk) locale support (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9713\"\u003e#9713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e454758fb6edf1dcf5aa5417a388b940c871469c\"\u003e\u003ccode\u003ee454758\u003c/code\u003e\u003c/a\u003e Fix regression in unique_together validation with SerializerMethodField (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/33d59fefaa5af04f4bed9312239eb1e5e6def2a2\"\u003e\u003ccode\u003e33d59fe\u003c/code\u003e\u003c/a\u003e Update Spanish translations (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9701\"\u003e#9701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0202a0aa5cbaf8573458b932878dfd5044c93ab\"\u003e\u003ccode\u003ec0202a0\u003c/code\u003e\u003c/a\u003e Update Django documentation links to use stable version (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9698\"\u003e#9698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.1\"\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 `filelock` from 3.13.4 to 3.20.0\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.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tox.toml to sdist by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate docs with example by \u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 3.14 support and drop 3.9 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/448\"\u003etox-dev/filelock#448\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/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\u003c/a\u003e\u003c/p\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\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIndicate that locks are exclusive/write locks. by \u003ca href=\"https://github.com/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport fcntl check on Emscripten by \u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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.17.0...3.18.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.17.0...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDrop 3.8\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/f7c3f8ea7defc21b3f0d736bb36711769cce840e\"\u003e\u003ccode\u003ef7c3f8e\u003c/code\u003e\u003c/a\u003e Add 3.14 support and drop 3.9 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/a95eec6245de176cf5aaaa95c187ce688d697277\"\u003e\u003ccode\u003ea95eec6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f3e532fd35dbe480b25362a0e8b8e0aa41040c3f\"\u003e\u003ccode\u003ef3e532f\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1eff49a2aeb69f905a1ab9dc442fab5d7c601a3c\"\u003e\u003ccode\u003e1eff49a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/3c9448adeaebc0157cf5745dc5c40167678cf171\"\u003e\u003ccode\u003e3c9448a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/09f59904c1cadafaaa5b09b0d7ee8aa3b85c64f5\"\u003e\u003ccode\u003e09f5990\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/5011a34d2881199529c6f25bd38b26314340bbde\"\u003e\u003ccode\u003e5011a34\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/32372aa24897128b7c891d1c6b783ad368c7f114\"\u003e\u003ccode\u003e32372aa\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/441\"\u003e#441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1af28f256cb6093e354aced4b4de15a483ddb827\"\u003e\u003ccode\u003e1af28f2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66bcdb30cba57b8ee3dfb20b63aada74969afd81\"\u003e\u003ccode\u003e66bcdb3\u003c/code\u003e\u003c/a\u003e Update docs with example (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.13.4...3.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.41.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.41.0...v2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress deprecation warning for ADC (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1815\"\u003e#1815\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/751ce3f625eb24029e9f0c59c081bdd3e18eb583\"\u003e751ce3f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.3...v2.41.0\"\u003e2.41.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for cachetools 6.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1773\"\u003e#1773\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commi...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/41","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/41","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41/packages"},{"uuid":"2915460641","node_id":"PR_kwDOO7JJJ86txmYh","number":40,"state":"open","title":"build(deps): bump the python group across 1 directory with 57 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-10-15T02:02:25.498Z","updated_at":"2025-10-16T15:20:36.059Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":57,"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":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.14.2","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.2","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.37.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.12.0"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.10"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.10.7","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 57 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| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.41.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.14.2` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.2` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.37.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.12.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.10` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.10.7` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `certifi` from 2025.1.31 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.01.31...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.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/4bb46c2949fc67a1f8e74c43776833d81df471ed\"\u003e\u003ccode\u003e4bb46c2\u003c/code\u003e\u003c/a\u003e Add Kazakh(kk) locale support (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9713\"\u003e#9713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e454758fb6edf1dcf5aa5417a388b940c871469c\"\u003e\u003ccode\u003ee454758\u003c/code\u003e\u003c/a\u003e Fix regression in unique_together validation with SerializerMethodField (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/33d59fefaa5af04f4bed9312239eb1e5e6def2a2\"\u003e\u003ccode\u003e33d59fe\u003c/code\u003e\u003c/a\u003e Update Spanish translations (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9701\"\u003e#9701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0202a0aa5cbaf8573458b932878dfd5044c93ab\"\u003e\u003ccode\u003ec0202a0\u003c/code\u003e\u003c/a\u003e Update Django documentation links to use stable version (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9698\"\u003e#9698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.1\"\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 `filelock` from 3.13.4 to 3.20.0\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.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tox.toml to sdist by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate docs with example by \u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 3.14 support and drop 3.9 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/448\"\u003etox-dev/filelock#448\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/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\u003c/a\u003e\u003c/p\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\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIndicate that locks are exclusive/write locks. by \u003ca href=\"https://github.com/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport fcntl check on Emscripten by \u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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.17.0...3.18.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.17.0...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDrop 3.8\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/f7c3f8ea7defc21b3f0d736bb36711769cce840e\"\u003e\u003ccode\u003ef7c3f8e\u003c/code\u003e\u003c/a\u003e Add 3.14 support and drop 3.9 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/a95eec6245de176cf5aaaa95c187ce688d697277\"\u003e\u003ccode\u003ea95eec6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f3e532fd35dbe480b25362a0e8b8e0aa41040c3f\"\u003e\u003ccode\u003ef3e532f\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1eff49a2aeb69f905a1ab9dc442fab5d7c601a3c\"\u003e\u003ccode\u003e1eff49a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/3c9448adeaebc0157cf5745dc5c40167678cf171\"\u003e\u003ccode\u003e3c9448a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/09f59904c1cadafaaa5b09b0d7ee8aa3b85c64f5\"\u003e\u003ccode\u003e09f5990\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/5011a34d2881199529c6f25bd38b26314340bbde\"\u003e\u003ccode\u003e5011a34\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/32372aa24897128b7c891d1c6b783ad368c7f114\"\u003e\u003ccode\u003e32372aa\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/441\"\u003e#441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1af28f256cb6093e354aced4b4de15a483ddb827\"\u003e\u003ccode\u003e1af28f2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66bcdb30cba57b8ee3dfb20b63aada74969afd81\"\u003e\u003ccode\u003e66bcdb3\u003c/code\u003e\u003c/a\u003e Update docs with example (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.13.4...3.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.41.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.41.0...v2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress deprecation warning for ADC (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1815\"\u003e#1815\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/751ce3f625eb24029e9f0c59c081bdd3e18eb583\"\u003e751ce3f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.3...v2.41.0\"\u003e2.41.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for cachetools 6.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1773\"\u003e#1773\u003c/a\u003e) (\u003ca href...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/40","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/40","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/40/packages"},{"uuid":"3508119123","node_id":"PR_kwDOO7JJJ86tXG2W","number":39,"state":"closed","title":"build(deps): bump the python group across 1 directory with 55 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-15T00:27:20.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T00:47:06.000Z","updated_at":"2025-10-15T00:27:22.000Z","time_to_close":171614,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":55,"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":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.14.2","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.2","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.37.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.12.0"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.10"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.10.7","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 55 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| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.3` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.41.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.14.2` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.2` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.37.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.12.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.10` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.10.7` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `certifi` from 2025.1.31 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.01.31...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.1 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\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/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.1...3.4.3\"\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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/4bb46c2949fc67a1f8e74c43776833d81df471ed\"\u003e\u003ccode\u003e4bb46c2\u003c/code\u003e\u003c/a\u003e Add Kazakh(kk) locale support (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9713\"\u003e#9713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e454758fb6edf1dcf5aa5417a388b940c871469c\"\u003e\u003ccode\u003ee454758\u003c/code\u003e\u003c/a\u003e Fix regression in unique_together validation with SerializerMethodField (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/33d59fefaa5af04f4bed9312239eb1e5e6def2a2\"\u003e\u003ccode\u003e33d59fe\u003c/code\u003e\u003c/a\u003e Update Spanish translations (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9701\"\u003e#9701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0202a0aa5cbaf8573458b932878dfd5044c93ab\"\u003e\u003ccode\u003ec0202a0\u003c/code\u003e\u003c/a\u003e Update Django documentation links to use stable version (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9698\"\u003e#9698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.1\"\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 `filelock` from 3.13.4 to 3.20.0\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.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tox.toml to sdist by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate docs with example by \u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 3.14 support and drop 3.9 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/448\"\u003etox-dev/filelock#448\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/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\u003c/a\u003e\u003c/p\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\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIndicate that locks are exclusive/write locks. by \u003ca href=\"https://github.com/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport fcntl check on Emscripten by \u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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.17.0...3.18.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.17.0...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDrop 3.8\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/f7c3f8ea7defc21b3f0d736bb36711769cce840e\"\u003e\u003ccode\u003ef7c3f8e\u003c/code\u003e\u003c/a\u003e Add 3.14 support and drop 3.9 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/a95eec6245de176cf5aaaa95c187ce688d697277\"\u003e\u003ccode\u003ea95eec6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f3e532fd35dbe480b25362a0e8b8e0aa41040c3f\"\u003e\u003ccode\u003ef3e532f\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1eff49a2aeb69f905a1ab9dc442fab5d7c601a3c\"\u003e\u003ccode\u003e1eff49a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/3c9448adeaebc0157cf5745dc5c40167678cf171\"\u003e\u003ccode\u003e3c9448a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/09f59904c1cadafaaa5b09b0d7ee8aa3b85c64f5\"\u003e\u003ccode\u003e09f5990\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/5011a34d2881199529c6f25bd38b26314340bbde\"\u003e\u003ccode\u003e5011a34\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/32372aa24897128b7c891d1c6b783ad368c7f114\"\u003e\u003ccode\u003e32372aa\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/441\"\u003e#441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1af28f256cb6093e354aced4b4de15a483ddb827\"\u003e\u003ccode\u003e1af28f2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66bcdb30cba57b8ee3dfb20b63aada74969afd81\"\u003e\u003ccode\u003e66bcdb3\u003c/code\u003e\u003c/a\u003e Update docs with example (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.13.4...3.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.41.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.41.0...v2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress deprecation warning for ADC (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1815\"\u003e#1815\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/751ce3f625eb24029e9f0c59c081bdd3e18eb583\"\u003e751ce3f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.3...v2.41.0\"\u003e2.41.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for cachetools 6.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1773\"\u003e#1773\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/af18060d521baf86c219d66a26631decb3b28e79\"\u003eaf18060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd trust boundary support for service accounts and impersonation. (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1778\"\u003e#1778\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/99be2ce19401296718f880c7a80cd2e841df78bf\"\u003e99be2ce\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecating \u003ca href=\"https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.load_credentials_from_dict\"\u003eload_credentials_from_dict\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/58b66ec8069bfe5304c7da512fe89a8e838ce1ca\"\u003e58b66ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecating \u003ca href=\"https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.load_credentials_from_file\"\u003eload_credentials_from_file\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/58b66ec8069bfe5304c7da512fe89a8e838ce1ca\"\u003e58b66ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix type error in credentials.py for python 3.7 and 3.8 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1805\"\u003e#1805\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/c30a6a781d3e385598a0ac28a370a7f4800010cc\"\u003ec30a6a7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate user guide to include x509 feature. (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1802\"\u003e#1802\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/2d89ab4d85568564e1f462f5b463991ffd9b82b1\"\u003e2d89ab4...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/39","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/39","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/39/packages"},{"uuid":"3493427171","node_id":"PR_kwDOO7JJJ86smLWu","number":37,"state":"closed","title":"build(deps): bump the python group across 1 directory with 54 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-13T00:35:31.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-08T00:30:03.000Z","updated_at":"2025-10-13T00:35:33.000Z","time_to_close":432328,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":54,"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":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.14.2","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.4.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.0","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.34.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.1","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.37.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.12.0"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.10"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.6"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.10.7","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 54 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| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.3` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.19.1` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.41.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.14.2` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.4.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.34.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.1` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.37.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.12.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.10` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.6` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.10.7` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `certifi` from 2025.1.31 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.01.31...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.1 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\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/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.1...3.4.3\"\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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/4bb46c2949fc67a1f8e74c43776833d81df471ed\"\u003e\u003ccode\u003e4bb46c2\u003c/code\u003e\u003c/a\u003e Add Kazakh(kk) locale support (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9713\"\u003e#9713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e454758fb6edf1dcf5aa5417a388b940c871469c\"\u003e\u003ccode\u003ee454758\u003c/code\u003e\u003c/a\u003e Fix regression in unique_together validation with SerializerMethodField (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/33d59fefaa5af04f4bed9312239eb1e5e6def2a2\"\u003e\u003ccode\u003e33d59fe\u003c/code\u003e\u003c/a\u003e Update Spanish translations (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9701\"\u003e#9701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0202a0aa5cbaf8573458b932878dfd5044c93ab\"\u003e\u003ccode\u003ec0202a0\u003c/code\u003e\u003c/a\u003e Update Django documentation links to use stable version (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9698\"\u003e#9698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.1\"\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 `filelock` from 3.13.4 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\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIndicate that locks are exclusive/write locks. by \u003ca href=\"https://github.com/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport fcntl check on Emscripten by \u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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.17.0...3.18.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.17.0...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDrop 3.8\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.16.1...3.17.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.16.1...3.17.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.16.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCI improvements 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/362\"\u003etox-dev/filelock#362\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.16.0...3.16.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.16.0...3.16.1\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/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.13.4...3.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.41.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.41.0...v2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress deprecation warning for ADC (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1815\"\u003e#1815\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/751ce3f625eb24029e9f0c59c081bdd3e18eb583\"\u003e751ce3f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.3...v2.41.0\"\u003e2.41.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for cachetools 6.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1773\"\u003e#1773\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/af18060d521baf86c219d66a26631decb3b28e79\"\u003eaf18060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd trust boundary support for service accounts and impersonation. (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1778\"\u003e#1778\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/99be2ce19401296718f880c7a80cd2e841df78bf\"\u003e99be2ce\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecating \u003ca href=\"https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.load_credentials_from_dict\"\u003eload_credentials_from_dict\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/58b66ec8069bfe5304c7da512fe89a8e838ce1ca\"\u003e58b66ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecating \u003ca href=\"https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.load_credentials_from_file\"\u003eload_credentials_from_file\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/58b66ec8069bfe5304c7da512fe89a8e838ce1ca\"\u003e58b66ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix type error in credentials.py for python 3.7 and 3.8 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1805\"\u003e#1805\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/c30a6a781d3e385598a0ac28a370a7f4800010cc\"\u003ec30a6a7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate user guide to include x509 feature. (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1802\"\u003e#1802\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/2d89ab4d85568564e1f462f5b463991ffd9b82b1\"\u003e2d89ab4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.40.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.2...v2.40.3\"\u003e2.40.3\u003c/a\u003e (2025-06-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuth fetch token from default endpoint (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1779\"\u003e#1779\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/88891cc596640b0bb3a2891532e2d32f2c9f0ec3\"\u003e88891cc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary call to mds service (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1769\"\u003e#1769\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/7c61c7d0a42ceec3eab693065745a74f524acab0\"\u003e7c61c7d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry 504 errors (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1767\"\u003e#1767\u003c/a\u003e) (\u003ca...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/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"}],"issue_packages":[{"old_version":"3.1.1","new_version":"3.2.2","update_type":"minor","path":null,"pr_created_at":"2026-02-20T21:35:06.000Z","version_change":"3.1.1 → 3.2.2","issue":{"uuid":"3970470274","node_id":"PR_kwDOJ9Adm87FQ8fo","number":3,"state":"open","title":"build(deps): bump the pip group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-20T21:35:06.000Z","updated_at":"2026-02-20T21:35:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip","update_count":3,"packages":[{"name":"flask","old_version":"1.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"oauthlib","old_version":"3.1.1","new_version":"3.2.2","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"requests","old_version":"2.26.0","new_version":"2.32.4","repository_url":"https://github.com/psf/requests"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 3 updates in the /PolyglottVoice/backend directory: [flask](https://github.com/pallets/flask), [oauthlib](https://github.com/oauthlib/oauthlib) and [requests](https://github.com/psf/requests).\n\nUpdates `flask` from 1.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue 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/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.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/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.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/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/1.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `oauthlib` from 3.1.1 to 3.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.2\u003c/h2\u003e\n\u003ch2\u003eOAuth2.0 Provider:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2022-36087\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.1\u003c/h2\u003e\n\u003ch2\u003eIn short\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/803\"\u003e#803\u003c/a\u003e : Metadata endpoint support of non-HTTPS\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth1.0:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/818\"\u003e#818\u003c/a\u003e : Allow IPv6 being parsed by signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved and fixed documentation warnings.\u003c/li\u003e\n\u003cli\u003eCosmetic changes based on isort\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing slots to TokenBase by \u003ca href=\"https://github.com/ariebovenberg\"\u003e\u003ccode\u003e@​ariebovenberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/804\"\u003eoauthlib/oauthlib#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd CORS support for Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/806\"\u003eoauthlib/oauthlib#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGitHub Action to lint Python code by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/797\"\u003eoauthlib/oauthlib#797\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: fix Sphinx warnings for better ReadTheDocs generation by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/807\"\u003eoauthlib/oauthlib#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow non-HTTPS issuer when OAUTHLIB_INSECURE_TRANSPORT. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/803\"\u003eoauthlib/oauthlib#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix typo in test by \u003ca href=\"https://github.com/tamanobi\"\u003e\u003ccode\u003e@​tamanobi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/816\"\u003eoauthlib/oauthlib#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in server.rst by \u003ca href=\"https://github.com/NemanjaT\"\u003e\u003ccode\u003e@​NemanjaT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/819\"\u003eoauthlib/oauthlib#819\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed isort imports by \u003ca href=\"https://github.com/dasm\"\u003e\u003ccode\u003e@​dasm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/820\"\u003eoauthlib/oauthlib#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix a few typos by \u003ca href=\"https://github.com/timgates42\"\u003e\u003ccode\u003e@​timgates42\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/822\"\u003eoauthlib/oauthlib#822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typos by \u003ca href=\"https://github.com/kianmeng\"\u003e\u003ccode\u003e@​kianmeng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/823\"\u003eoauthlib/oauthlib#823\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/ariebovenberg\"\u003e\u003ccode\u003e@​ariebovenberg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/804\"\u003eoauthlib/oauthlib#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tamanobi\"\u003e\u003ccode\u003e@​tamanobi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/816\"\u003eoauthlib/oauthlib#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NemanjaT\"\u003e\u003ccode\u003e@​NemanjaT\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/819\"\u003eoauthlib/oauthlib#819\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kianmeng\"\u003e\u003ccode\u003e@​kianmeng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/823\"\u003eoauthlib/oauthlib#823\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.0...v3.2.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.2.0...v3.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.2.0\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/795\"\u003e#795\u003c/a\u003e: Add Device Authorization Flow for Web Application\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/786\"\u003e#786\u003c/a\u003e: Add PKCE support for Client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/783\"\u003e#783\u003c/a\u003e: Fallback to none in case of wrong expires_at format.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/790\"\u003e#790\u003c/a\u003e: Add support for CORS to metadata endpoint.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/791\"\u003e#791\u003c/a\u003e: Add support for CORS to token endpoint.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/787\"\u003e#787\u003c/a\u003e: Remove comma after Bearer in WWW-Authenticate\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Provider - OIDC:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/755\"\u003e#755\u003c/a\u003e: Call save_token in Hybrid code flow\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.2 (2022-10-17)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2022-36087\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.1 (2022-09-09)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/803\"\u003e#803\u003c/a\u003e: Metadata endpoint support of non-HTTPS\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth1.0:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/818\"\u003e#818\u003c/a\u003e: Allow IPv6 being parsed by signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved and fixed documentation warnings.\u003c/li\u003e\n\u003cli\u003eCosmetic changes based on isort\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.0 (2022-01-29)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/795\"\u003e#795\u003c/a\u003e: Add Device Authorization Flow for Web Application\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/786\"\u003e#786\u003c/a\u003e: Add PKCE support for Client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/783\"\u003e#783\u003c/a\u003e: Fallback to none in case of wrong expires_at format.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/790\"\u003e#790\u003c/a\u003e: Add support for CORS to metadata endpoint.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/791\"\u003e#791\u003c/a\u003e: Add support for CORS to token endpoint.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/787\"\u003e#787\u003c/a\u003e: Remove comma after Bearer in WWW-Authenticate\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Provider - OIDC:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/755\"\u003e#755\u003c/a\u003e: Call save_token in Hybrid code flow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/751\"\u003e#751\u003c/a\u003e: OIDC add support of refreshing ID Tokens with \u003ccode\u003erefresh_id_token\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/751\"\u003e#751\u003c/a\u003e: The RefreshTokenGrant modifiers now take the same arguments as the\nAuthorizationCodeGrant modifiers (\u003ccode\u003etoken\u003c/code\u003e, \u003ccode\u003etoken_handler\u003c/code\u003e, \u003ccode\u003erequest\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Python 3.9, 3.10, 3.11\u003c/li\u003e\n\u003cli\u003eImprove Travis \u0026amp; Coverage\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/e6c33e41a8ce6dadff387cdc4613a55b63d1827e\"\u003e\u003ccode\u003ee6c33e4\u003c/code\u003e\u003c/a\u003e Add 3.2.2 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/4a4d65f8eeecfe7d778269466871c5c15fe9c1bc\"\u003e\u003ccode\u003e4a4d65f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/832\"\u003e#832\u003c/a\u003e from oauthlib/3.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/88bb1562930a9bd9368bf26120655794d90d9585\"\u003e\u003ccode\u003e88bb156\u003c/code\u003e\u003c/a\u003e Updated date and authors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/2e40b412c844ecc4673c3fa3f72181f228bdbacd\"\u003e\u003ccode\u003e2e40b41\u003c/code\u003e\u003c/a\u003e Merge pull request from GHSA-3pgj-pg6c-r5p7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/1a45d9790543673208e603e13a7be4aa4cba7339\"\u003e\u003ccode\u003e1a45d97\u003c/code\u003e\u003c/a\u003e Prepare 3.2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/b4bdd09c56aa5dedb475529e75ce73c092ca0898\"\u003e\u003ccode\u003eb4bdd09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/818\"\u003e#818\u003c/a\u003e from dasm/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/5d85c61998692643dd9d17e05d2646e06ce391e8\"\u003e\u003ccode\u003e5d85c61\u003c/code\u003e\u003c/a\u003e Fix IPV6 regex used to check redirect_uri\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/e514826eea15f2b62bbc13da407b71552ef5ff4c\"\u003e\u003ccode\u003ee514826\u003c/code\u003e\u003c/a\u003e Add check of performance of ipv6 check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/0adbbe10ed8ef822d1c780987fffc56670ce3f9f\"\u003e\u003ccode\u003e0adbbe1\u003c/code\u003e\u003c/a\u003e docs: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6569ec3c062be7268f4a17f5a371aa29f1bcfa4a\"\u003e\u003ccode\u003e6569ec3\u003c/code\u003e\u003c/a\u003e docs: Fix a few typos\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.1.1...v3.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.26.0 to 2.32.4\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.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.3\u003c/h2\u003e\n\u003ch2\u003e2.32.3 (2024-05-29)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug breaking the ability to specify custom SSLContexts in sub-classes of\nHTTPAdapter. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6716\"\u003e#6716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed issue where Requests started failing to run on Python versions compiled\nwithout the \u003ccode\u003essl\u003c/code\u003e module. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6724\"\u003e#6724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.2\u003c/h2\u003e\n\u003ch2\u003e2.32.2 (2024-05-21)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTo provide a more stable migration for custom HTTPAdapters impacted\nby the CVE changes in 2.32.0, we've renamed \u003ccode\u003e_get_connection\u003c/code\u003e to\na new public API, \u003ccode\u003eget_connection_with_tls_context\u003c/code\u003e. Existing custom\nHTTPAdapters will need to migrate their code to use this new API.\n\u003ccode\u003eget_connection\u003c/code\u003e is considered deprecated in all versions of Requests\u0026gt;=2.32.0.\u003c/p\u003e\n\u003cp\u003eA minimal (2-line) example has been provided in the linked PR to ease\nmigration, but we strongly urge users to evaluate if their custom adapter\nis subject to the same issue described in CVE-2024-35195. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6710\"\u003e#6710\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.1\u003c/h2\u003e\n\u003ch2\u003e2.32.1 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing test certs to the sdist distributed on PyPI.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.0\u003c/h2\u003e\n\u003cp\u003e2.32.0 (2024-05-20)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.3 (2024-05-29)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug breaking the ability to specify custom SSLContexts in sub-classes of\nHTTPAdapter. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6716\"\u003e#6716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed issue where Requests started failing to run on Python versions compiled\nwithout the \u003ccode\u003essl\u003c/code\u003e module. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6724\"\u003e#6724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.2 (2024-05-21)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTo provide a more stable migration for custom HTTPAdapters impacted\nby the CVE changes in 2.32.0, we've renamed \u003ccode\u003e_get_connection\u003c/code\u003e to\na new public API, \u003ccode\u003eget_connection_with_tls_context\u003c/code\u003e. Existing custom\nHTTPAdapters will need to migrate their code to use this new API.\n\u003ccode\u003eget_connection\u003c/code\u003e is considered deprecated in all versions of Requests\u0026gt;=2.32.0.\u003c/p\u003e\n\u003cp\u003eA minimal (2-line) example has been provided in the linked PR to ease\nmigration, but we strongly urge users to evaluate if their custom adapter\nis subject to the same issue described in CVE-2024-35195. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6710\"\u003e#6710\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.1 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing test certs to the sdist distributed on PyPI.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.0 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\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/psf/requests/commit/021dc729f0b71a3030cefdbec7fb57a0e80a6cfd\"\u003e\u003ccode\u003e021dc72\u003c/code\u003e\u003c/a\u003e Polish up release tooling for last manual release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/821770e822a20a21b207b3907ea83878bda1d396\"\u003e\u003ccode\u003e821770e\u003c/code\u003e\u003c/a\u003e Bump version and add release notes for v2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/59f8aa2adf1d3d06bcbf7ce6b13743a1639a5401\"\u003e\u003ccode\u003e59f8aa2\u003c/code\u003e\u003c/a\u003e Add netrc file search information to authentication documentation (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6876\"\u003e#6876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5b4b64c3467fd7a3c03f91ee641aaa348b6bed3b\"\u003e\u003ccode\u003e5b4b64c\u003c/code\u003e\u003c/a\u003e Add more tests to prevent regression of CVE 2024 47081\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7bc45877a86192af77645e156eb3744f95b47dae\"\u003e\u003ccode\u003e7bc4587\u003c/code\u003e\u003c/a\u003e Add new test to check netrc auth leak (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6962\"\u003e#6962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/96ba401c1296ab1dda74a2365ef36d88f7d144ef\"\u003e\u003ccode\u003e96ba401\u003c/code\u003e\u003c/a\u003e Only use hostname to do netrc lookup instead of netloc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7341690e842a23cf18ded0abd9229765fa88c4e2\"\u003e\u003ccode\u003e7341690\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6951\"\u003e#6951\u003c/a\u003e from tswast/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6716d7c9f29df636643fa2489f98890216525cb0\"\u003e\u003ccode\u003e6716d7c\u003c/code\u003e\u003c/a\u003e remove links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a7e1c745dc23c18e836febd672416ed0c5d8d8ae\"\u003e\u003ccode\u003ea7e1c74\u003c/code\u003e\u003c/a\u003e Update docs/conf.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/c799b8167a13416833ad3b4f3298261a477e826f\"\u003e\u003ccode\u003ec799b81\u003c/code\u003e\u003c/a\u003e docs: fix dead links to kenreitz.org\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.26.0...v2.32.4\"\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\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/Jokerman890/PentestGPT/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/Jokerman890/PentestGPT/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jokerman890%2FPentestGPT/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-02-19T08:41:59.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3961673930","node_id":"PR_kwDORTuhwc7E0C-r","number":75,"state":"open","title":"Bump oauthlib from 3.2.2 to 3.3.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-19T08:41:59.000Z","updated_at":"2026-02-19T08:42:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":null,"ecosystem":"pip"},"body":"Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.2.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee also CHANGELOG.md\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse proper SPDX identifier by \u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade GitHub Actions and make bandit, codespell, and pytest mandatory by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/835\"\u003eoauthlib/oauthlib#835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOAuth2Error: Allow falsy values as state by \u003ca href=\"https://github.com/TiphaineLAURENT\"\u003e\u003ccode\u003e@​TiphaineLAURENT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/815\"\u003eoauthlib/oauthlib#815\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-configured OIDC server to use OIDC flavor of Refresh Token grant type by \u003ca href=\"https://github.com/burkel24\"\u003e\u003ccode\u003e@​burkel24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/838\"\u003eoauthlib/oauthlib#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate setup.cfg to use license_files by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/839\"\u003eoauthlib/oauthlib#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure expires_at is always int by \u003ca href=\"https://github.com/sindrig\"\u003e\u003ccode\u003e@​sindrig\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/828\"\u003eoauthlib/oauthlib#828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecreate security policy by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/831\"\u003eoauthlib/oauthlib#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix failing GitHub Action lint_python.yml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/854\"\u003eoauthlib/oauthlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/855\"\u003eoauthlib/oauthlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd classifier for Python 3.11 by \u003ca href=\"https://github.com/eseifert\"\u003e\u003ccode\u003e@​eseifert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/840\"\u003eoauthlib/oauthlib#840\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove from Travis to GitHub Actions CI by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/834\"\u003eoauthlib/oauthlib#834\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/859\"\u003eoauthlib/oauthlib#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Only attempt upload for upstream by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/858\"\u003eoauthlib/oauthlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/861\"\u003eoauthlib/oauthlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003erequest.client_id\u003c/code\u003e is set during Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/853\"\u003eoauthlib/oauthlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTox use ruff by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/864\"\u003eoauthlib/oauthlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake UtilsTests.test_filter_params Python 3.13+ compatible by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/866\"\u003eoauthlib/oauthlib#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate dependency-review.yml by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/850\"\u003eoauthlib/oauthlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifier by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/860\"\u003eoauthlib/oauthlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoveralls parallel is True — Turn GitHub Actions green by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/871\"\u003eoauthlib/oauthlib#871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI Errors by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/878\"\u003eoauthlib/oauthlib#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate create_code_verifier to output the proper length by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/876\"\u003eoauthlib/oauthlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the device authorization endpoint (RFC8628 section 3.1 \u0026amp; 3.2) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/881\"\u003eoauthlib/oauthlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/883\"\u003eoauthlib/oauthlib#883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow user_code to be configured for device auth flow (Device Authorization Grant) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/885\"\u003eoauthlib/oauthlib#885\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuard ui_locales.split() by \u003ca href=\"https://github.com/jaap3\"\u003e\u003ccode\u003e@​jaap3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/879\"\u003eoauthlib/oauthlib#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd DeviceCodeGrant type for device code flow(rfc8628) section 3.4 \u0026amp; 3.5  by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/889\"\u003eoauthlib/oauthlib#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDevice flow: Pass verification_uri_complete to endpoint + pass Server kwargs to DeviceCodeGrant to allow validators to be setup with more flexibility by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/891\"\u003eoauthlib/oauthlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code verifier regex by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/893\"\u003eoauthlib/oauthlib#893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove generic classifier by \u003ca href=\"https://github.com/EvertonSA\"\u003e\u003ccode\u003e@​EvertonSA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/895\"\u003eoauthlib/oauthlib#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add django-allauth to available options by \u003ca href=\"https://github.com/pennersr\"\u003e\u003ccode\u003e@​pennersr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/902\"\u003eoauthlib/oauthlib#902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle expires_at with best effort basis by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/900\"\u003eoauthlib/oauthlib#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e3.3.0 release by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/898\"\u003eoauthlib/oauthlib#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=oauthlib\u0026package-manager=pip\u0026previous-version=3.2.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/bhavikpatel/geonode_nepal_ithari/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhavikpatel%2Fgeonode_nepal_ithari/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":"/server","pr_created_at":"2026-02-01T07:48:19.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3881487268","node_id":"PR_kwDOQ1Ry-M7Ar_8i","number":9,"state":"closed","title":"Bump oauthlib from 3.2.2 to 3.3.1 in /server","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-02T08:07:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T07:48:19.000Z","updated_at":"2026-03-02T08:08:01.000Z","time_to_close":2506780,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":"/server","ecosystem":"pip"},"body":"Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.2.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee also CHANGELOG.md\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse proper SPDX identifier by \u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade GitHub Actions and make bandit, codespell, and pytest mandatory by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/835\"\u003eoauthlib/oauthlib#835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOAuth2Error: Allow falsy values as state by \u003ca href=\"https://github.com/TiphaineLAURENT\"\u003e\u003ccode\u003e@​TiphaineLAURENT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/815\"\u003eoauthlib/oauthlib#815\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-configured OIDC server to use OIDC flavor of Refresh Token grant type by \u003ca href=\"https://github.com/burkel24\"\u003e\u003ccode\u003e@​burkel24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/838\"\u003eoauthlib/oauthlib#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate setup.cfg to use license_files by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/839\"\u003eoauthlib/oauthlib#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure expires_at is always int by \u003ca href=\"https://github.com/sindrig\"\u003e\u003ccode\u003e@​sindrig\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/828\"\u003eoauthlib/oauthlib#828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecreate security policy by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/831\"\u003eoauthlib/oauthlib#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix failing GitHub Action lint_python.yml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/854\"\u003eoauthlib/oauthlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/855\"\u003eoauthlib/oauthlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd classifier for Python 3.11 by \u003ca href=\"https://github.com/eseifert\"\u003e\u003ccode\u003e@​eseifert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/840\"\u003eoauthlib/oauthlib#840\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove from Travis to GitHub Actions CI by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/834\"\u003eoauthlib/oauthlib#834\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/859\"\u003eoauthlib/oauthlib#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Only attempt upload for upstream by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/858\"\u003eoauthlib/oauthlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/861\"\u003eoauthlib/oauthlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003erequest.client_id\u003c/code\u003e is set during Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/853\"\u003eoauthlib/oauthlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTox use ruff by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/864\"\u003eoauthlib/oauthlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake UtilsTests.test_filter_params Python 3.13+ compatible by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/866\"\u003eoauthlib/oauthlib#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate dependency-review.yml by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/850\"\u003eoauthlib/oauthlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifier by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/860\"\u003eoauthlib/oauthlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoveralls parallel is True — Turn GitHub Actions green by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/871\"\u003eoauthlib/oauthlib#871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI Errors by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/878\"\u003eoauthlib/oauthlib#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate create_code_verifier to output the proper length by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/876\"\u003eoauthlib/oauthlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the device authorization endpoint (RFC8628 section 3.1 \u0026amp; 3.2) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/881\"\u003eoauthlib/oauthlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/883\"\u003eoauthlib/oauthlib#883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow user_code to be configured for device auth flow (Device Authorization Grant) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/885\"\u003eoauthlib/oauthlib#885\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuard ui_locales.split() by \u003ca href=\"https://github.com/jaap3\"\u003e\u003ccode\u003e@​jaap3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/879\"\u003eoauthlib/oauthlib#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd DeviceCodeGrant type for device code flow(rfc8628) section 3.4 \u0026amp; 3.5  by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/889\"\u003eoauthlib/oauthlib#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDevice flow: Pass verification_uri_complete to endpoint + pass Server kwargs to DeviceCodeGrant to allow validators to be setup with more flexibility by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/891\"\u003eoauthlib/oauthlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code verifier regex by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/893\"\u003eoauthlib/oauthlib#893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove generic classifier by \u003ca href=\"https://github.com/EvertonSA\"\u003e\u003ccode\u003e@​EvertonSA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/895\"\u003eoauthlib/oauthlib#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add django-allauth to available options by \u003ca href=\"https://github.com/pennersr\"\u003e\u003ccode\u003e@​pennersr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/902\"\u003eoauthlib/oauthlib#902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle expires_at with best effort basis by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/900\"\u003eoauthlib/oauthlib#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e3.3.0 release by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/898\"\u003eoauthlib/oauthlib#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=oauthlib\u0026package-manager=pip\u0026previous-version=3.2.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/priiyanshuraj/fitHub/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/priiyanshuraj%2FfitHub/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-01-19T01:08:56.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3827610593","node_id":"PR_kwDOO7JJJ8695mVs","number":54,"state":"open","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-19T01:08:56.000Z","updated_at":"2026-02-02T01:11:45.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.47.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.26","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.14.0"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.47.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.1.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.14.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.26` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.36.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.14.0` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.13` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.1\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.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged all functions currently raising the private \u003ccode\u003eNoCurrentAsyncBackend\u003c/code\u003e exception (since v4.12.0) to instead raise the public \u003ccode\u003eNoEventLoopError\u003c/code\u003e exception (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with instance methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/a0dccbd78d75886247ae7846b460fd390cc94fbd\"\u003e\u003ccode\u003ea0dccbd\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e1121a735c977c00c18b3a581d28daf83a279833\"\u003e\u003ccode\u003ee1121a7\u003c/code\u003e\u003c/a\u003e Enabled tests for the 4.12.x branch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/69ab43e549517ce554f84365fed9da90e806c303\"\u003e\u003ccode\u003e69ab43e\u003c/code\u003e\u003c/a\u003e Fixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4f4b33ed56edd1bc4785a368a103ad8138730d91\"\u003e\u003ccode\u003e4f4b33e\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eBlockingPortal.__new__\u003c/code\u003e hack (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/af17d89b80ebbd526215e2dbd025b284730aaa3f\"\u003e\u003ccode\u003eaf17d89\u003c/code\u003e\u003c/a\u003e Replaced the NoCurrentAsyncBackend exception with NoEventLoopError (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4310264312a2e86e792481bdb05bdb381678a6b5\"\u003e\u003ccode\u003e4310264\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0cc6723ba5a2fdaa98a24852d3681c4ed99b8863\"\u003e\u003ccode\u003e0cc6723\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enco...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/54","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/54","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/54/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-01-05T00:24:42.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3779809235","node_id":"PR_kwDOO7JJJ867ctOq","number":52,"state":"closed","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-13T04:41:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-05T00:24:42.000Z","updated_at":"2026-01-13T04:41:37.000Z","time_to_close":706614,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.2","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.21","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.2` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.0.2` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.21` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/52","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/52","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/52/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-01-01T09:17:32.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3774361274","node_id":"PR_kwDOEsqFD867L5_h","number":6100,"state":"closed","title":"chore(deps): bump oauthlib from 3.2.2 to 3.3.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-02T16:28:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-01T09:17:32.000Z","updated_at":"2026-01-02T16:28:34.000Z","time_to_close":112254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":null,"ecosystem":"pip"},"body":"Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.2.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee also CHANGELOG.md\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse proper SPDX identifier by \u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade GitHub Actions and make bandit, codespell, and pytest mandatory by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/835\"\u003eoauthlib/oauthlib#835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOAuth2Error: Allow falsy values as state by \u003ca href=\"https://github.com/TiphaineLAURENT\"\u003e\u003ccode\u003e@​TiphaineLAURENT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/815\"\u003eoauthlib/oauthlib#815\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-configured OIDC server to use OIDC flavor of Refresh Token grant type by \u003ca href=\"https://github.com/burkel24\"\u003e\u003ccode\u003e@​burkel24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/838\"\u003eoauthlib/oauthlib#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate setup.cfg to use license_files by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/839\"\u003eoauthlib/oauthlib#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure expires_at is always int by \u003ca href=\"https://github.com/sindrig\"\u003e\u003ccode\u003e@​sindrig\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/828\"\u003eoauthlib/oauthlib#828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecreate security policy by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/831\"\u003eoauthlib/oauthlib#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix failing GitHub Action lint_python.yml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/854\"\u003eoauthlib/oauthlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/855\"\u003eoauthlib/oauthlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd classifier for Python 3.11 by \u003ca href=\"https://github.com/eseifert\"\u003e\u003ccode\u003e@​eseifert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/840\"\u003eoauthlib/oauthlib#840\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove from Travis to GitHub Actions CI by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/834\"\u003eoauthlib/oauthlib#834\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/859\"\u003eoauthlib/oauthlib#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Only attempt upload for upstream by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/858\"\u003eoauthlib/oauthlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/861\"\u003eoauthlib/oauthlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003erequest.client_id\u003c/code\u003e is set during Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/853\"\u003eoauthlib/oauthlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTox use ruff by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/864\"\u003eoauthlib/oauthlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake UtilsTests.test_filter_params Python 3.13+ compatible by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/866\"\u003eoauthlib/oauthlib#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate dependency-review.yml by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/850\"\u003eoauthlib/oauthlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifier by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/860\"\u003eoauthlib/oauthlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoveralls parallel is True — Turn GitHub Actions green by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/871\"\u003eoauthlib/oauthlib#871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI Errors by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/878\"\u003eoauthlib/oauthlib#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate create_code_verifier to output the proper length by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/876\"\u003eoauthlib/oauthlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the device authorization endpoint (RFC8628 section 3.1 \u0026amp; 3.2) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/881\"\u003eoauthlib/oauthlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/883\"\u003eoauthlib/oauthlib#883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow user_code to be configured for device auth flow (Device Authorization Grant) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/885\"\u003eoauthlib/oauthlib#885\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuard ui_locales.split() by \u003ca href=\"https://github.com/jaap3\"\u003e\u003ccode\u003e@​jaap3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/879\"\u003eoauthlib/oauthlib#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd DeviceCodeGrant type for device code flow(rfc8628) section 3.4 \u0026amp; 3.5  by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/889\"\u003eoauthlib/oauthlib#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDevice flow: Pass verification_uri_complete to endpoint + pass Server kwargs to DeviceCodeGrant to allow validators to be setup with more flexibility by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/891\"\u003eoauthlib/oauthlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code verifier regex by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/893\"\u003eoauthlib/oauthlib#893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove generic classifier by \u003ca href=\"https://github.com/EvertonSA\"\u003e\u003ccode\u003e@​EvertonSA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/895\"\u003eoauthlib/oauthlib#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add django-allauth to available options by \u003ca href=\"https://github.com/pennersr\"\u003e\u003ccode\u003e@​pennersr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/902\"\u003eoauthlib/oauthlib#902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle expires_at with best effort basis by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/900\"\u003eoauthlib/oauthlib#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e3.3.0 release by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/898\"\u003eoauthlib/oauthlib#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=oauthlib\u0026package-manager=uv\u0026previous-version=3.2.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/betagouv/ma-cantine/pull/6100","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/betagouv%2Fma-cantine/issues/6100","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6100/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-12-25T00:21:31.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3761179744","node_id":"PR_kwDOO7JJJ866hgPU","number":51,"state":"closed","title":"build(deps): bump the python group across 1 directory with 61 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-05T00:21:18.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-25T00:21:31.000Z","updated_at":"2026-01-05T00:21:19.000Z","time_to_close":950387,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":61,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.18","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.0","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.40.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 61 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.1` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.0.2` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.5` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.18` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.40.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu ...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/51","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/51","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/51/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-12-22T13:25:38.000Z","version_change":"3.2.2 → 3.3.1","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":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-12-19T00:24:10.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3745411269","node_id":"PR_kwDOO7JJJ865tr1O","number":50,"state":"closed","title":"build(deps): bump the python group across 1 directory with 60 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-25T00:18:53.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-19T00:24:10.000Z","updated_at":"2025-12-25T00:18:55.000Z","time_to_close":518083,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":60,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.2","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.4","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.12.1.14","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.18","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.0","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.3.2"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.8"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 60 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.1` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.45.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.2` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.4` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.12.1.14` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.18` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.3.2` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.8` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.10` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framew...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/50","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/50","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/50/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-12-01T01:07:54.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3678790695","node_id":"PR_kwDOO7JJJ862Opn2","number":49,"state":"closed","title":"build(deps): bump the python group across 1 directory with 61 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-19T00:21:07.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T01:07:54.000Z","updated_at":"2025-12-19T00:21:09.000Z","time_to_close":1552393,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":61,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.43.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.16.1","repository_url":"https://github.com/pypa/hatch"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.0","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.4","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.11.14.15","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.13","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.0","repository_url":"https://github.com/celery/celery"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.1"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.13"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.12.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 61 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.43.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.16.1` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.0` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.4` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.11.14.15` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.13` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.13` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.7` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.12.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":"/app","pr_created_at":"2025-11-24T13:00:53.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3658802881","node_id":"PR_kwDOFCxEgM61MamF","number":377,"state":"closed","title":"Bump oauthlib from 3.2.2 to 3.3.1 in /app","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2025-11-25T10:57:43.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-24T13:00:53.000Z","updated_at":"2025-11-25T10:57:44.000Z","time_to_close":79010,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":"/app","ecosystem":"pip"},"body":"Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.2.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee also CHANGELOG.md\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse proper SPDX identifier by \u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade GitHub Actions and make bandit, codespell, and pytest mandatory by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/835\"\u003eoauthlib/oauthlib#835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOAuth2Error: Allow falsy values as state by \u003ca href=\"https://github.com/TiphaineLAURENT\"\u003e\u003ccode\u003e@​TiphaineLAURENT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/815\"\u003eoauthlib/oauthlib#815\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-configured OIDC server to use OIDC flavor of Refresh Token grant type by \u003ca href=\"https://github.com/burkel24\"\u003e\u003ccode\u003e@​burkel24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/838\"\u003eoauthlib/oauthlib#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate setup.cfg to use license_files by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/839\"\u003eoauthlib/oauthlib#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure expires_at is always int by \u003ca href=\"https://github.com/sindrig\"\u003e\u003ccode\u003e@​sindrig\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/828\"\u003eoauthlib/oauthlib#828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecreate security policy by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/831\"\u003eoauthlib/oauthlib#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix failing GitHub Action lint_python.yml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/854\"\u003eoauthlib/oauthlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/855\"\u003eoauthlib/oauthlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd classifier for Python 3.11 by \u003ca href=\"https://github.com/eseifert\"\u003e\u003ccode\u003e@​eseifert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/840\"\u003eoauthlib/oauthlib#840\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove from Travis to GitHub Actions CI by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/834\"\u003eoauthlib/oauthlib#834\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/859\"\u003eoauthlib/oauthlib#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Only attempt upload for upstream by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/858\"\u003eoauthlib/oauthlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLint with ruff to replace bandit, flake8, isort, pyupgrade by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/861\"\u003eoauthlib/oauthlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003erequest.client_id\u003c/code\u003e is set during Refresh Token Grant. by \u003ca href=\"https://github.com/luhn\"\u003e\u003ccode\u003e@​luhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/853\"\u003eoauthlib/oauthlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTox use ruff by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/864\"\u003eoauthlib/oauthlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake UtilsTests.test_filter_params Python 3.13+ compatible by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/866\"\u003eoauthlib/oauthlib#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate dependency-review.yml by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/850\"\u003eoauthlib/oauthlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifier by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/860\"\u003eoauthlib/oauthlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoveralls parallel is True — Turn GitHub Actions green by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/871\"\u003eoauthlib/oauthlib#871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI Errors by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/878\"\u003eoauthlib/oauthlib#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate create_code_verifier to output the proper length by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/876\"\u003eoauthlib/oauthlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the device authorization endpoint (RFC8628 section 3.1 \u0026amp; 3.2) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/881\"\u003eoauthlib/oauthlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/883\"\u003eoauthlib/oauthlib#883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow user_code to be configured for device auth flow (Device Authorization Grant) by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/885\"\u003eoauthlib/oauthlib#885\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuard ui_locales.split() by \u003ca href=\"https://github.com/jaap3\"\u003e\u003ccode\u003e@​jaap3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/879\"\u003eoauthlib/oauthlib#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd DeviceCodeGrant type for device code flow(rfc8628) section 3.4 \u0026amp; 3.5  by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/889\"\u003eoauthlib/oauthlib#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDevice flow: Pass verification_uri_complete to endpoint + pass Server kwargs to DeviceCodeGrant to allow validators to be setup with more flexibility by \u003ca href=\"https://github.com/duzumaki\"\u003e\u003ccode\u003e@​duzumaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/891\"\u003eoauthlib/oauthlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code verifier regex by \u003ca href=\"https://github.com/shawnz\"\u003e\u003ccode\u003e@​shawnz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/893\"\u003eoauthlib/oauthlib#893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove generic classifier by \u003ca href=\"https://github.com/EvertonSA\"\u003e\u003ccode\u003e@​EvertonSA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/895\"\u003eoauthlib/oauthlib#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add django-allauth to available options by \u003ca href=\"https://github.com/pennersr\"\u003e\u003ccode\u003e@​pennersr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/902\"\u003eoauthlib/oauthlib#902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle expires_at with best effort basis by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/900\"\u003eoauthlib/oauthlib#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e3.3.0 release by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/898\"\u003eoauthlib/oauthlib#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Shortfinga\"\u003e\u003ccode\u003e@​Shortfinga\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/836\"\u003eoauthlib/oauthlib#836\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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=oauthlib\u0026package-manager=pip\u0026previous-version=3.2.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/mmuyakwa/Twitter-Replies/pull/377","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmuyakwa%2FTwitter-Replies/issues/377","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/377/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-11-18T00:29:16.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3635583599","node_id":"PR_kwDOO7JJJ86z-f6q","number":47,"state":"closed","title":"build(deps): bump the python group across 1 directory with 58 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-28T00:21:10.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-18T00:29:16.000Z","updated_at":"2025-11-28T00:21:12.000Z","time_to_close":863514,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":58,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.10.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.43.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.15.1","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"keyring","old_version":"25.6.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.11.14.15","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.10","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.0"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"django-compressor","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/django-compressor/django-compressor"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.12"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.11.3","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.4.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 58 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.10.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.43.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.15.1` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [keyring](https://github.com/jaraco/keyring) | `25.6.0` | `25.7.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.11.14.15` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.10` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.0` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [django-compressor](https://github.com/django-compressor/django-compressor) | `4.5.1` | `4.6.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.12` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.5` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.11.3` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.4.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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\u003eAdded support for asyncio's \u003ccode\u003etask call graphs\u003c/code\u003e_ on Python 3.14 and later when using\nAnyIO's task groups\n(\u003ccode\u003e[#1025](https://github.com/agronholm/anyio/issues/1025) \u0026lt;https://github.com/agronholm/anyio/pull/1025\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module\n(\u003ccode\u003e[#1001](https://github.com/agronholm/anyio/issues/1001) \u0026lt;https://github.com/agronholm/anyio/pull/1001\u0026gt;\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\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e\n(\u003ccode\u003e[#1003](https://github.com/agronholm/anyio/issues/1003) \u0026lt;https://github.com/agronholm/anyio/pull/1003\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.)\n(\u003ccode\u003e[#1009](https://github.com/agronholm/anyio/issues/1009) \u0026lt;https://github.com/agronholm/anyio/pull/1009\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero\n(\u003ccode\u003e[#1019](https://github.com/agronholm/anyio/issues/1019) \u0026lt;https://github.com/agronholm/anyio/pull/1019\u0026gt;\u003c/code\u003e_; requires Python 3.10 or\nlater when using Trio)\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\nfunction (\u003ccode\u003e[#1021](https://github.com/agronholm/anyio/issues/1021) \u0026lt;https://github.com/agronholm/anyio/pull/1021\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in\nsuch cases (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_; PR by\n\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\n(\u003ccode\u003e[#1002](https://github.com/agronholm/anyio/issues/1002) \u0026lt;https://github.com/agronholm/anyio/issues/1002\u0026gt;\u003c/code\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\n\u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function\n(\u003ccode\u003e[#1011](https://github.com/agronholm/anyio/issues/1011) \u0026lt;https://github.com/agronholm/anyio/issues/1011\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _task call graphs: \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003ehttps://docs.python.org/3/library/asyncio-graph.html\u003c/a\u003e\n.. _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\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django d...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/47","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/47","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/47/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-11-07T00:31:25.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3598149320","node_id":"PR_kwDOO7JJJ86yBafF","number":44,"state":"closed","title":"build(deps): bump the python group across 1 directory with 57 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-10T00:40:59.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-07T00:31:25.000Z","updated_at":"2025-11-10T00:41:01.000Z","time_to_close":259774,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":57,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.10.0","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.43.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.15.1","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.7","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.13.0"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.12"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.4","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.11.0","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 57 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.10.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.43.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.15.1` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.7` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.4` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.13.0` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.12` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.4` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.11.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module\n(\u003ccode\u003e[#1001](https://github.com/agronholm/anyio/issues/1001) \u0026lt;https://github.com/agronholm/anyio/pull/1001\u0026gt;\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\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.)\n(\u003ccode\u003e[#1009](https://github.com/agronholm/anyio/issues/1009) \u0026lt;https://github.com/agronholm/anyio/pull/1009\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero\n(\u003ccode\u003e[#1019](https://github.com/agronholm/anyio/issues/1019) \u0026lt;https://github.com/agronholm/anyio/pull/1019\u0026gt;\u003c/code\u003e_; requires Python 3.10 or\nlater when using Trio)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in\nsuch cases (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_; PR by\n\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\n(\u003ccode\u003e[#1002](https://github.com/agronholm/anyio/issues/1002) \u0026lt;https://github.com/agronholm/anyio/issues/1002\u0026gt;\u003c/code\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\n\u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function\n(\u003ccode\u003e[#1011](https://github.com/agronholm/anyio/issues/1011) \u0026lt;https://github.com/agronholm/anyio/issues/1011\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\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\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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 `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `certifi` from 2025.1.31 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.01.31...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.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e ...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/44","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/44","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/44/packages"}},{"old_version":"==3.2.*","new_version":"\u003e=3.2,\u003c3.4","update_type":"patch","path":null,"pr_created_at":"2025-10-27T17:47:15.000Z","version_change":"==3.2.* → \u003e=3.2,\u003c3.4","issue":{"uuid":"3557912321","node_id":"PR_kwDOBUbV_86v9Ani","number":431,"state":"closed","title":"Update oauthlib requirement from ==3.2.* to \u003e=3.2,\u003c3.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-02T20:48:10.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-27T17:47:15.000Z","updated_at":"2025-12-02T20:48:18.000Z","time_to_close":3121255,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"oauthlib","old_version":"==3.2.*","new_version":"\u003e=3.2,\u003c3.4","repository_url":"https://github.com/oauthlib/oauthlib"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [oauthlib](https://github.com/oauthlib/oauthlib) 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/oauthlib/oauthlib/releases\"\u003eoauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStop installing \u003ccode\u003eexamples\u003c/code\u003e into \u003ccode\u003esite-packages\u003c/code\u003e by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/904\"\u003eoauthlib/oauthlib#904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd explicit GHSA for vuln disclosure by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/903\"\u003eoauthlib/oauthlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mandatory RTD configuration by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/908\"\u003eoauthlib/oauthlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 3.3.0 regression of expires_in by \u003ca href=\"https://github.com/JonathanHuot\"\u003e\u003ccode\u003e@​JonathanHuot\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/pull/907\"\u003eoauthlib/oauthlib#907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/oauthlib/oauthlib/compare/v3.3.0...v3.3.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/oauthlib/oauthlib/blob/master/CHANGELOG.rst\"\u003eoauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1 (2025-06-19):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/906\"\u003e#906\u003c/a\u003e: fix regression of expires_in parsing when float in string.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.3.0 (2025-06-17):\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOIDC: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/879\"\u003e#879\u003c/a\u003e Changed in how ui_locales is parsed\u003c/li\u003e\n\u003cli\u003eRFC8628: Added OAuth2.0 Device Authorization Grant support\u003c/li\u003e\n\u003cli\u003ePKCE: \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/876\"\u003e#876\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/893\"\u003e#893\u003c/a\u003e Fixed \u003ccode\u003ecreate_code_verifier\u003c/code\u003e length\u003c/li\u003e\n\u003cli\u003eOIDC: Pre-configured OIDC server to use Refresh Token by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Common:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOAuth2Error: Allow 0 to be a valid state\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth2.0 Client:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/745\"\u003e#745\u003c/a\u003e: expires_at is forced to be an int\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/899\"\u003e#899\u003c/a\u003e: expires_at clarification\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.5, 3.6, 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/859\"\u003e#859\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/883\"\u003e#883\u003c/a\u003e: Added Python 3.12, 3.13 Support\u003c/li\u003e\n\u003cli\u003eAdded dependency-review GitHub Action\u003c/li\u003e\n\u003cli\u003eUpdated various references of license (SPDX identifier..)\u003c/li\u003e\n\u003cli\u003eAdded GitHub Action for lint, replaced bandy with ruff, removed isort...\u003c/li\u003e\n\u003cli\u003eMigrated to GitHub Actions from Travis\u003c/li\u003e\n\u003cli\u003eAdded Security Policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.2 (2022-10-17)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2022-36087\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.1 (2022-09-09)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Provider:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/803\"\u003e#803\u003c/a\u003e: Metadata endpoint support of non-HTTPS\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOAuth1.0:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/818\"\u003e#818\u003c/a\u003e: Allow IPv6 being parsed by signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGeneral:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved and fixed documentation warnings.\u003c/li\u003e\n\u003cli\u003eCosmetic changes based on isort\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.2.0 (2022-01-29)\u003c/h2\u003e\n\u003cp\u003eOAuth2.0 Client:\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/oauthlib/oauthlib/commit/a2779c65b3e961f1b49c05a2417c0ae819f3f8c4\"\u003e\u003ccode\u003ea2779c6\u003c/code\u003e\u003c/a\u003e Bump dependency-review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/38c2a8e859a0d0890b76fbb1a42e4d72ce84ae04\"\u003e\u003ccode\u003e38c2a8e\u003c/code\u003e\u003c/a\u003e Merge publish into build workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9b65baf2432e33f51c4e9a834dd6973277385ad1\"\u003e\u003ccode\u003e9b65baf\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/93fdf9144060751d555915960054431cadb6679a\"\u003e\u003ccode\u003e93fdf91\u003c/code\u003e\u003c/a\u003e Add twine manual instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/6b65bd1927748648e3a7dc6e3ccd9d3e29260d03\"\u003e\u003ccode\u003e6b65bd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/34c90128402e24460ec4bce54ef4d9de8a0cd24c\"\u003e\u003ccode\u003e34c9012\u003c/code\u003e\u003c/a\u003e Handle expires_in as float to be backward compatible with 3.2.*\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/f5d58f8effc785306e56b558476f4140d0496ad7\"\u003e\u003ccode\u003ef5d58f8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/908\"\u003e#908\u003c/a\u003e from oauthlib/rtd-cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/136b3e72586286d04f8a53ae230539af4d99b69e\"\u003e\u003ccode\u003e136b3e7\u003c/code\u003e\u003c/a\u003e Add mandatory RTD configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/892953211edcaa2c106144364c926fbaaa436918\"\u003e\u003ccode\u003e8929532\u003c/code\u003e\u003c/a\u003e Add unit test sample based on 3.3.0 regression of expires_in\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oauthlib/oauthlib/commit/9ed616d10ed502e0747cdb559ddab7c9b780a440\"\u003e\u003ccode\u003e9ed616d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/oauthlib/oauthlib/issues/903\"\u003e#903\u003c/a\u003e from oauthlib/security-ghsa\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oauthlib/oauthlib/compare/v3.2.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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\n\n\u003e **Note**\n\u003e Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n","html_url":"https://github.com/fossasia/eventyay-talk/pull/431","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossasia%2Feventyay-talk/issues/431","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/431/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-10-23T14:29:31.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3544957462","node_id":"PR_kwDOObfdnc6vR8IL","number":41,"state":"closed","title":"Bump the python group across 1 directory with 92 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-03T14:48:02.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-23T14:29:31.000Z","updated_at":"2025-11-03T14:48:03.000Z","time_to_close":951511,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":92,"packages":[{"name":"absl-py","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/abseil/abseil-py"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.10.0","repository_url":"https://github.com/django/asgiref"},{"name":"billiard","old_version":"4.2.1","new_version":"4.2.2","repository_url":"https://github.com/celery/billiard"},{"name":"bitarray","old_version":"3.0.0","new_version":"3.7.2","repository_url":"https://github.com/ilanschnell/bitarray"},{"name":"bitstring","old_version":"4.3.0","new_version":"4.3.1","repository_url":"https://github.com/scott-griffiths/bitstring"},{"name":"blessed","old_version":"1.20.0","new_version":"1.22.0","repository_url":"https://github.com/jquast/blessed"},{"name":"celery","old_version":"5.4.0","new_version":"5.5.3","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.0","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"comm","old_version":"0.2.2","new_version":"0.2.3","repository_url":"https://github.com/ipython/comm"},{"name":"contourpy","old_version":"1.2.0","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"debugpy","old_version":"1.8.7","new_version":"1.8.17","repository_url":"https://github.com/microsoft/debugpy"},{"name":"decorator","old_version":"5.1.1","new_version":"5.2.1","repository_url":"https://github.com/micheles/decorator"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"django","old_version":"5.1.5","new_version":"5.2.7","repository_url":"https://github.com/django/django"},{"name":"django-celery","old_version":"3.1.17","new_version":"3.3.1","repository_url":"https://github.com/celery/django-celery"},{"name":"ecdsa","old_version":"0.19.0","new_version":"0.19.1","repository_url":"https://github.com/tlsfuzzer/python-ecdsa"},{"name":"executing","old_version":"2.1.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"filelock","old_version":"3.17.0","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.47.0","new_version":"4.60.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"grpcio","old_version":"1.67.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"h5py","old_version":"3.12.1","new_version":"3.15.1","repository_url":"https://github.com/h5py/h5py"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"inquirer","old_version":"3.2.4","new_version":"3.4.1","repository_url":"https://github.com/magmax/python-inquirer"},{"name":"jedi","old_version":"0.19.1","new_version":"0.19.2","repository_url":"https://github.com/davidhalter/jedi"},{"name":"jinxed","old_version":"1.2.1","new_version":"1.3.0","repository_url":"https://github.com/Rockhopper-Technologies/jinxed"},{"name":"joblib","old_version":"1.3.2","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jupyter-core","old_version":"5.7.2","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"keras","old_version":"3.6.0","new_version":"3.11.3","repository_url":"https://github.com/keras-team/keras"},{"name":"kiwisolver","old_version":"1.4.5","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"kombu","old_version":"5.4.2","new_version":"5.5.4","repository_url":"https://github.com/celery/kombu"},{"name":"markdown","old_version":"3.7","new_version":"3.9","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.1","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.8.2","new_version":"3.10.7","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"ml-dtypes","old_version":"0.4.1","new_version":"0.5.3","repository_url":"https://github.com/jax-ml/ml_dtypes"},{"name":"mpi4py","old_version":"4.0.1","new_version":"4.1.1","repository_url":"https://github.com/mpi4py/mpi4py"},{"name":"namex","old_version":"0.0.8","new_version":"0.1.0"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"optree","old_version":"0.13.0","new_version":"0.17.0","repository_url":"https://github.com/metaopt/optree"},{"name":"pandas","old_version":"2.1.4","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.48","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygame","old_version":"2.6.0","new_version":"2.6.1","repository_url":"https://github.com/pygame/pygame"},{"name":"pygments","old_version":"2.18.0","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.1.1","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"readchar","old_version":"4.1.0","new_version":"4.2.1","repository_url":"https://github.com/magmax/python-readchar"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"scikit-learn","old_version":"1.3.2","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.11.4","new_version":"1.16.2","repository_url":"https://github.com/scipy/scipy"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"tensorboard","old_version":"2.17.1","new_version":"2.20.0","repository_url":"https://github.com/tensorflow/tensorboard"},{"name":"tensorflow","old_version":"2.17.0","new_version":"2.20.0","repository_url":"https://github.com/tensorflow/tensorflow"},{"name":"tensorflow-intel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/tensorflow/tensorflow"},{"name":"threadpoolctl","old_version":"3.2.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tornado","old_version":"6.4.1","new_version":"6.5.2","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"virtualenv","old_version":"20.29.1","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"},{"name":"werkzeug","old_version":"3.0.4","new_version":"3.1.3","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wheel","old_version":"0.44.0","new_version":"0.45.1","repository_url":"https://github.com/pypa/wheel"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"hiredis","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"django-celery-beat","old_version":"2.7.0","new_version":"2.8.1","repository_url":"https://github.com/celery/django-celery-beat"},{"name":"uvicorn","old_version":"0.34.0","new_version":"0.38.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.7.0","new_version":"65.12.1"},{"name":"django-crispy-forms","old_version":"2.3","new_version":"2.4","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"crispy-bootstrap5","old_version":"2025.4","new_version":"2025.6","repository_url":"https://github.com/django-crispy-forms/crispy-bootstrap5"},{"name":"djangorestframework","old_version":"3.16.0","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"django-cors-headers","old_version":"4.7.0","new_version":"4.9.0","repository_url":"https://github.com/adamchainz/django-cors-headers"},{"name":"psycopg","old_version":"3.2.6","new_version":"3.2.11"},{"name":"collectfasta","old_version":"3.2.1","new_version":"3.3.1","repository_url":"https://github.com/jasongi/collectfasta"},{"name":"sentry-sdk","old_version":"2.25.1","new_version":"2.42.1","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1","repository_url":"https://github.com/anymail/django-anymail"},{"name":"watchfiles","old_version":"1.0.4","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"django-stubs","old_version":"5.1.3","new_version":"5.2.7"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"djangorestframework-stubs","old_version":"3.15.3","new_version":"3.16.5","repository_url":"https://github.com/sponsors/typeddjango"},{"name":"ruff","old_version":"0.11.4","new_version":"0.14.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.8.0","new_version":"7.11.0","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"factory-boy","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/FactoryBoy/factory_boy"},{"name":"django-extensions","old_version":"4.0","new_version":"4.1","repository_url":"https://github.com/django-extensions/django-extensions"},{"name":"django-coverage-plugin","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 92 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [absl-py](https://github.com/abseil/abseil-py) | `2.1.0` | `2.3.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.10.0` |\n| [billiard](https://github.com/celery/billiard) | `4.2.1` | `4.2.2` |\n| [bitarray](https://github.com/ilanschnell/bitarray) | `3.0.0` | `3.7.2` |\n| [bitstring](https://github.com/scott-griffiths/bitstring) | `4.3.0` | `4.3.1` |\n| [blessed](https://github.com/jquast/blessed) | `1.20.0` | `1.22.0` |\n| [celery](https://github.com/celery/celery) | `5.4.0` | `5.5.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [comm](https://github.com/ipython/comm) | `0.2.2` | `0.2.3` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.2.0` | `1.3.3` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.7` | `1.8.17` |\n| [decorator](https://github.com/micheles/decorator) | `5.1.1` | `5.2.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [django](https://github.com/django/django) | `5.1.5` | `5.2.7` |\n| [django-celery](https://github.com/celery/django-celery) | `3.1.17` | `3.3.1` |\n| [ecdsa](https://github.com/tlsfuzzer/python-ecdsa) | `0.19.0` | `0.19.1` |\n| [executing](https://github.com/alexmojaki/executing) | `2.1.0` | `2.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.17.0` | `3.20.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.47.0` | `4.60.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.67.0` | `1.76.0` |\n| [h5py](https://github.com/h5py/h5py) | `3.12.1` | `3.15.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [inquirer](https://github.com/magmax/python-inquirer) | `3.2.4` | `3.4.1` |\n| [jedi](https://github.com/davidhalter/jedi) | `0.19.1` | `0.19.2` |\n| [jinxed](https://github.com/Rockhopper-Technologies/jinxed) | `1.2.1` | `1.3.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.3.2` | `1.5.2` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.7.2` | `5.9.1` |\n| [keras](https://github.com/keras-team/keras) | `3.6.0` | `3.11.3` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.5` | `1.4.9` |\n| [kombu](https://github.com/celery/kombu) | `5.4.2` | `5.5.4` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.9` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.1` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.2` | `3.10.7` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [ml-dtypes](https://github.com/jax-ml/ml_dtypes) | `0.4.1` | `0.5.3` |\n| [mpi4py](https://github.com/mpi4py/mpi4py) | `4.0.1` | `4.1.1` |\n| namex | `0.0.8` | `0.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [optree](https://github.com/metaopt/optree) | `0.13.0` | `0.17.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.1.4` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.5.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.48` | `3.0.52` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pygame](https://github.com/pygame/pygame) | `2.6.0` | `2.6.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.19.2` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.1` | `3.2.5` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [readchar](https://github.com/magmax/python-readchar) | `4.1.0` | `4.2.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.2` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.11.4` | `1.16.2` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [tensorboard](https://github.com/tensorflow/tensorboard) | `2.17.1` | `2.20.0` |\n| [tensorflow](https://github.com/tensorflow/tensorflow) | `2.17.0` | `2.20.0` |\n| [tensorflow-intel](https://github.com/tensorflow/tensorflow) | `2.17.0` | `2.18.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.2.0` | `3.6.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.4.1` | `6.5.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.29.1` | `20.35.3` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.0.4` | `3.1.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.44.0` | `0.45.1` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.1.0` | `3.3.0` |\n| [django-celery-beat](https://github.com/celery/django-celery-beat) | `2.7.0` | `2.8.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.0` | `0.38.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.7.0` | `65.12.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.3` | `2.4` |\n| [crispy-bootstrap5](https://github.com/django-crispy-forms/crispy-bootstrap5) | `2025.4` | `2025.6` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.0` | `3.16.1` |\n| [django-cors-headers](https://github.com/adamchainz/django-cors-headers) | `4.7.0` | `4.9.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.6` | `3.2.11` |\n| [collectfasta](https://github.com/jasongi/collectfasta) | `3.2.1` | `3.3.1` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.25.1` | `2.42.1` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.4` | `1.1.1` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.1.3` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [djangorestframework-stubs](https://github.com/sponsors/typeddjango) | `3.15.3` | `3.16.5` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.4` | `0.14.1` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.8.0` | `7.11.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [factory-boy](https://github.com/FactoryBoy/factory_boy) | `3.3.2` | `3.3.3` |\n| [django-extensions](https://github.com/django-extensions/django-extensions) | `4.0` | `4.1` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.0` | `3.2.0` |\n\n\nUpdates `absl-py` from 2.1.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/abseil/abseil-py/releases\"\u003eabsl-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.1\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(cleanup) Removed leftover code supporting Python \u0026lt; 3.8, as well as other\nreferences to older Python versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(typechecking) Fixed typechecking errors that appeared under mypy release 1.16\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Add extension point for letting \u003ccode\u003eTestLoader\u003c/code\u003e specify a custom\nsharding scheme.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate package build and release process. Switched to using \u003ccode\u003epyproject.toml\u003c/code\u003e,\n\u003ccode\u003ehatch\u003c/code\u003e, and GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Added a new method \u003ccode\u003eabsltest.TestCase.assertMappingEqual\u003c/code\u003e that tests equality of Mapping objects not requiring them to be dicts. Similar to \u003ccode\u003eassertSequenceEqual\u003c/code\u003e but for mappings.\u003c/li\u003e\n\u003cli\u003e(testing) Added a new method \u003ccode\u003eabsltest.assertDictContainsSubset\u003c/code\u003e that checks that a dictionary contains a subset of keys and values. Similar to a removed method \u003ccode\u003eunittest.assertDictContainsSubset\u003c/code\u003e (existed until Python 3.11).\u003c/li\u003e\n\u003cli\u003eAdded type annotations that are compliant with MyPy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Fixed an issue where the test reporter crashes with exceptions with no string representation, starting with Python 3.11.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(The change log also includes changes in \u003ccode\u003e2.2.0\u003c/code\u003e and \u003ccode\u003e2.2.1\u003c/code\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/abseil/abseil-py/blob/main/CHANGELOG.md\"\u003eabsl-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.1 (2025-07-03)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(cleanup) Removed leftover code supporting Python \u0026lt; 3.8, as well as other\nreferences to older Python versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(typechecking) Fixed typechecking errors that appeared under mypy release 1.16\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.0 (2025-05-26)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Add extension point for letting \u003ccode\u003eTestLoader\u003c/code\u003e specify a custom\nsharding scheme.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate package build and release process. Switched to using \u003ccode\u003epyproject.toml\u003c/code\u003e,\n\u003ccode\u003ehatch\u003c/code\u003e, and GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.2 (2025-04-03)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Added a new method \u003ccode\u003eabsltest.TestCase.assertMappingEqual\u003c/code\u003e that\ntests equality of Mapping objects not requiring them to be dicts. Similar to\n\u003ccode\u003eassertSequenceEqual\u003c/code\u003e but for mappings.\u003c/li\u003e\n\u003cli\u003e(testing) Added a new method \u003ccode\u003eabsltest.assertDictContainsSubset\u003c/code\u003e that checks\nthat a dictionary contains a subset of keys and values. Similar to a removed\nmethod \u003ccode\u003eunittest.assertDictContainsSubset\u003c/code\u003e (existed until Python 3.11).\u003c/li\u003e\n\u003cli\u003eAdded type annotations that are compliant with MyPy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(testing) Fixed an issue where the test reporter crashes with exceptions with\nno string representation, starting with Python 3.11.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/bdad52d90492be48ed535f7d6369c406860d547a\"\u003e\u003ccode\u003ebdad52d\u003c/code\u003e\u003c/a\u003e Release Abseil-py 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/a2d05830f40abf992f4a7e9716cf518f64ec0ce4\"\u003e\u003ccode\u003ea2d0583\u003c/code\u003e\u003c/a\u003e Clean up some references to older Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/55c8f4d1a83481ef4d62fb38b043844580169886\"\u003e\u003ccode\u003e55c8f4d\u003c/code\u003e\u003c/a\u003e Fix typechecking errors that appeared under mypy release 1.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/aafb0d89d21f38e9eb200eb375db3473678a98dc\"\u003e\u003ccode\u003eaafb0d8\u003c/code\u003e\u003c/a\u003e Add useful links to the abseil-py public files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/2f11045b6be5acf6ff6e1ffb40898dc83c28a609\"\u003e\u003ccode\u003e2f11045\u003c/code\u003e\u003c/a\u003e Bump absl-py version to 2.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/4d008a9658d4de49b98c64b600b0f50526c0a6f8\"\u003e\u003ccode\u003e4d008a9\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/c31c4f6cf7352fca9cd58cd26f02bcc9185badb3\"\u003e\u003ccode\u003ec31c4f6\u003c/code\u003e\u003c/a\u003e Automatize package release process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/842bf097bdf34cd08181e7c426fe5df38a3ae22c\"\u003e\u003ccode\u003e842bf09\u003c/code\u003e\u003c/a\u003e Switch to pyproject.toml + hatchling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/369ce9badbda914b7d3b975b7272e1194b419213\"\u003e\u003ccode\u003e369ce9b\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ehelp\u003c/code\u003e argument indentation in \u003ccode\u003eDEFINE_multi_enum_class\u003c/code\u003e function documen...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abseil/abseil-py/commit/71eb53dad22e5361941c31a891ec032efd079805\"\u003e\u003ccode\u003e71eb53d\u003c/code\u003e\u003c/a\u003e Add extension point for letting TestLoader specify a custom sharding scheme.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/abseil/abseil-py/compare/v2.1.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.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 `billiard` from 4.2.1 to 4.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/releases\"\u003ebilliard's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd codespell support (config, workflow to detect/not fix) and make it fix few typos by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/416\"\u003ecelery/billiard#416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003einitial python 3.13 support by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/421\"\u003ecelery/billiard#421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCopy \u003ccode\u003ecode.co_qualname\u003c/code\u003e on Python \u0026gt;= 3.11 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/423\"\u003ecelery/billiard#423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded DeepWiki to README by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/424\"\u003ecelery/billiard#424\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the failing pre-commit.ci job by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/429\"\u003ecelery/billiard#429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGitHub Actions: Test on Python 3.14 release candidate 2 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/428\"\u003ecelery/billiard#428\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/430\"\u003ecelery/billiard#430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/431\"\u003ecelery/billiard#431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/432\"\u003ecelery/billiard#432\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/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/416\"\u003ecelery/billiard#416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/423\"\u003ecelery/billiard#423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/429\"\u003ecelery/billiard#429\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.1...v4.2.2\"\u003ehttps://github.com/celery/billiard/compare/v4.2.1...v4.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/celery/billiard/blob/main/CHANGES.txt\"\u003ebilliard's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.2 - 2025-09-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd codespell support (config, workflow to detect/not fix) and make it fix few typos\u003c/li\u003e\n\u003cli\u003einitial python 3.13 support\u003c/li\u003e\n\u003cli\u003eCopy \u003ccode\u003ecode.co_qualname\u003c/code\u003e on Python \u0026gt;= 3.11\u003c/li\u003e\n\u003cli\u003eAdded DeepWiki to README\u003c/li\u003e\n\u003cli\u003eFix the failing pre-commit.ci job\u003c/li\u003e\n\u003cli\u003eGitHub Actions: Test on Python 3.14 release candidate 2\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/0642d2e8ab6c4541a2fd6f0e08ddca50871b50c5\"\u003e\u003ccode\u003e0642d2e\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.2 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/a954b74c01561c53446cfb8eed75f2ad6e9721ee\"\u003e\u003ccode\u003ea954b74\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/431\"\u003e#431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/57123cb8f46014fabd0d86cba032059c90d03a77\"\u003e\u003ccode\u003e57123cb\u003c/code\u003e\u003c/a\u003e Keep GitHub Actions up to date with GitHub's Dependabot (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/75d195c2bd8557552a50508f74dc7678ed8ce5b5\"\u003e\u003ccode\u003e75d195c\u003c/code\u003e\u003c/a\u003e GitHub Actions: Test on Python 3.14 release candidate 2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/fe16b46b34e87960691f5e027907bc9d05bbae9e\"\u003e\u003ccode\u003efe16b46\u003c/code\u003e\u003c/a\u003e Fix the failing pre-commit.ci job (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/0b0783b0c4a5c6391e57ddba4a71eada3cca1819\"\u003e\u003ccode\u003e0b0783b\u003c/code\u003e\u003c/a\u003e Added DeepWiki to README (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/d8b2df5b23573d6f20a6f9b2b85ef45cc0eb4ddf\"\u003e\u003ccode\u003ed8b2df5\u003c/code\u003e\u003c/a\u003e Copy \u003ccode\u003ecode.co_qualname\u003c/code\u003e on Python \u0026gt;= 3.11 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/423\"\u003e#423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/c88a0b7b8aae1c761d988da67af70aed07ecb8c1\"\u003e\u003ccode\u003ec88a0b7\u003c/code\u003e\u003c/a\u003e initial python 3.13 support (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/f7810403890c7024913595e1a6a15437281ed4a5\"\u003e\u003ccode\u003ef781040\u003c/code\u003e\u003c/a\u003e Add codespell support (config, workflow to detect/not fix) and make it fix fe...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.1...v4.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bitarray` from 3.0.0 to 3.7.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ilanschnell/bitarray/blob/master/doc/changelog.rst\"\u003ebitarray's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003e3.7.2\u003c/strong\u003e (2025-10-08):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eenable \u003ccode\u003eutil.random_k()\u003c/code\u003e for all supported Python versions,\npreviously this functions required Python 3.9 or higher\u003c/li\u003e\n\u003cli\u003eadd official Python 3.14 support\u003c/li\u003e\n\u003cli\u003eupdate cibuildwheel to 3.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.7.1\u003c/strong\u003e (2025-08-28):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix type hinting for memoryviews, see \u003ccode\u003e[#241](https://github.com/ilanschnell/bitarray/issues/241) \u0026lt;https://github.com/ilanschnell/bitarray/issues/241\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003ebit-endianness \u0026lt;endianness.rst\u0026gt;\u003c/code\u003e__ documentation\u003c/li\u003e\n\u003cli\u003eimprove testing, including debug mode test for \u003ccode\u003edigit_to_int()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.7.0\u003c/strong\u003e (2025-08-24):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003eutil.gen_primes()\u003c/code\u003e, generate bitarrays in which active indices are\nprime numbers\u003c/li\u003e\n\u003cli\u003eimprove \u003ccode\u003e.buffer_info()\u003c/code\u003e to return named tuple\u003c/li\u003e\n\u003cli\u003eadd optional \u003ccode\u003emode\u003c/code\u003e argument to \u003ccode\u003eutil.sum_indices()\u003c/code\u003e to sum square of\nactive indices\u003c/li\u003e\n\u003cli\u003eimprove internal \u003ccode\u003e_sysinfo()\u003c/code\u003e to include \u003ccode\u003ePy_DEBUG\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eDubner's conjecture \u0026lt;../examples/dubner.rst\u0026gt;\u003c/code\u003e__ (in memory of Harvey\nDubner)\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003edynamically growing sieve \u0026lt;../examples/dyn_sieve.py\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.6.1\u003c/strong\u003e (2025-08-12):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd development files for statistical tests in \u003ccode\u003edevel/random/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eoptimize \u003ccode\u003eutil.sum_indices()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003efix RecursionError in \u003ccode\u003eutil.random_k()\u003c/code\u003e, see \u003ccode\u003e[#239](https://github.com/ilanschnell/bitarray/issues/239) \u0026lt;https://github.com/ilanschnell/bitarray/issues/239\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003edevel/test_sum_indices.py\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.6.0\u003c/strong\u003e (2025-07-29):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003eutil.random_k()\u003c/code\u003e, see \u003ccode\u003e[#237](https://github.com/ilanschnell/bitarray/issues/237) \u0026lt;https://github.com/ilanschnell/bitarray/issues/237\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eutil.sum_indices()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eoptimize \u003ccode\u003eutil.xor_indices()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003emove development files from \u003ccode\u003eexamples/\u003c/code\u003e to \u003ccode\u003edevel/\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.5.2\u003c/strong\u003e (2025-07-21):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eoptimize \u003ccode\u003eutil.random_p()\u003c/code\u003e by also using bitwise AND in final step\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/2ceb747941caf3fc9565b36d55f35460fc576da2\"\u003e\u003ccode\u003e2ceb747\u003c/code\u003e\u003c/a\u003e add release date - update docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/9d4e0674d453787d334f796320438ca97990241c\"\u003e\u003ccode\u003e9d4e067\u003c/code\u003e\u003c/a\u003e update changelog - skip cp314t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/0a55769cf2a482fcad57c73502327a161b5f657a\"\u003e\u003ccode\u003e0a55769\u003c/code\u003e\u003c/a\u003e update cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/0e179bb0c960a7bf904ba90cddb424902c62e681\"\u003e\u003ccode\u003e0e179bb\u003c/code\u003e\u003c/a\u003e add official Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/7e5abeab076f5fb9be54a77a154e221719df7035\"\u003e\u003ccode\u003e7e5abea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ilanschnell/bitarray/issues/243\"\u003e#243\u003c/a\u003e from DJHills/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/7667dcfae0dd87f2a61db66f0fc8e59cd8572021\"\u003e\u003ccode\u003e7667dcf\u003c/code\u003e\u003c/a\u003e Fix tiny README typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/8f3845e0143fc0e2f57c75fcf0254173ee6a0bd0\"\u003e\u003ccode\u003e8f3845e\u003c/code\u003e\u003c/a\u003e simplify test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/84c29c8ac4cfc0afb9f9e08ac5e50e605dd80018\"\u003e\u003ccode\u003e84c29c8\u003c/code\u003e\u003c/a\u003e add devel test for resize()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/1dc477d4a3e6c492e041c8418c638873744a8041\"\u003e\u003ccode\u003e1dc477d\u003c/code\u003e\u003c/a\u003e wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/db26fe89b1bcc68bd1025cfde52380f826724860\"\u003e\u003ccode\u003edb26fe8\u003c/code\u003e\u003c/a\u003e fix wording\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ilanschnell/bitarray/compare/3.0.0...3.7.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bitstring` from 4.3.0 to 4.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scott-griffiths/bitstring/releases\"\u003ebitstring's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ebitstring-4.3.1\u003c/h2\u003e\n\u003cp\u003eUpdated bitarray dependency to allow for v3.x. Issue \u003ca href=\"https://redirect.github.com/scott-griffiths/bitstring/issues/355\"\u003e#355\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/scott-griffiths/bitstring/blob/main/release_notes.md\"\u003ebitstring's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMarch 2025: version 4.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated bitarray dependency to allow for v3.x.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scott-griffiths/bitstring/commit/d5226793eca62117edd9664730cf964e6a8db4f1\"\u003e\u003ccode\u003ed522679\u003c/code\u003e\u003c/a\u003e Updating bitarray dependency to \u0026lt;4.0 to allow for recent 3.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scott-griffiths/bitstring/commit/520dd6f004960268552b0d875be7bea9735d79c0\"\u003e\u003ccode\u003e520dd6f\u003c/code\u003e\u003c/a\u003e Missing format string specifier. Bug \u003ca href=\"https://redirect.github.com/scott-griffiths/bitstring/issues/353\"\u003e#353\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scott-griffiths/bitstring/commit/1b4562b9983a5945c48215d70bcc7dabdc9d5a18\"\u003e\u003ccode\u003e1b4562b\u003c/code\u003e\u003c/a\u003e Update to release notes.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scott-griffiths/bitstring/compare/bitstring-4.3.0...bitstring-4.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `blessed` from 1.20.0 to 1.22.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jquast/blessed/releases\"\u003eblessed's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.22.0\u003c/h2\u003e\n\u003ch2\u003eMajor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePerformance improved in \u003ccode\u003eTerminal.Length\u003c/code\u003e and \u003ccode\u003eSequence.padd\u003c/code\u003e by \u003ca href=\"https://github.com/grayjk\"\u003e\u003ccode\u003e@​grayjk\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/avylove\"\u003e\u003ccode\u003e@​avylove\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/286\"\u003e#286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/287\"\u003e#287\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/289\"\u003e#289\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/291\"\u003e#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes for failing tests by \u003ca href=\"https://github.com/avylove\"\u003e\u003ccode\u003e@​avylove\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/284\"\u003e#284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse a separate job to upload coverage for older python versions by \u003ca href=\"https://github.com/avylove\"\u003e\u003ccode\u003e@​avylove\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/288\"\u003e#288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse tool \u0026quot;codespell\u0026quot; in tox 'lint' step by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/jquast\"\u003e\u003ccode\u003e@​jquast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/293\"\u003e#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin docformatter by \u003ca href=\"https://github.com/avylove\"\u003e\u003ccode\u003e@​avylove\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/292\"\u003e#292\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jquast/blessed/compare/1.21.0...1.22.0\"\u003ehttps://github.com/jquast/blessed/compare/1.21.0...1.22.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.21.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ebugfix infinite loop in method \u003ccode\u003eTerminal.wrap()\u003c/code\u003e when \u0026quot;Wide\u0026quot; characters of\nwidth 2 (East-Asian or Emoji) are used with a wrap width of 1, and a small\nperformance enhancement, \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/273\"\u003e#273\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/274\"\u003e#274\u003c/a\u003e by \u003ca href=\"https://github.com/grayjk\"\u003e\u003ccode\u003e@​grayjk\u003c/code\u003e\u003c/a\u003e, merged as \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/275\"\u003e#275\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/jquast/blessed/blob/master/docs/history.rst\"\u003eblessed's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. py:currentmodule:: blessed.terminal\u003c/p\u003e\n\u003ch1\u003eVersion History\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003enext\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnvironment values FORCE_COLOR_, CLICOLOR_FORCE_, and NO_COLOR_ overrides\n:class:\u003ccode\u003eblessed.Terminal\u003c/code\u003e argument value, \u003ccode\u003eforce_styling\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eperformance improvements in :meth:\u003ccode\u003e~Terminal.rgb_downconvert\u003c/code\u003e for 256-color\nterminals, :ghpull:\u003ccode\u003e298\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eperformance improvements to :meth:\u003ccode\u003e~Terminal.length\u003c/code\u003e and\n:meth:\u003ccode\u003e~Terminal.wrap\u003c/code\u003e via :ghpull:\u003ccode\u003e286\u003c/code\u003e, :ghpull:\u003ccode\u003e287\u003c/code\u003e, :ghpull:\u003ccode\u003e289\u003c/code\u003e, and\n:ghpull:\u003ccode\u003e291\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003espelling fixes, :ghpull:\u003ccode\u003e278\u003c/code\u003e, :ghpull:\u003ccode\u003e293\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ebugfix infinite loop in :meth:\u003ccode\u003e~Terminal.wrap\u003c/code\u003e when \u0026quot;Wide\u0026quot; characters of\nwidth 2 (East-Asian or Emoji) are used with a wrap width of 1, and a small\nperformance enhancement, :ghissue:\u003ccode\u003e273\u003c/code\u003e and :ghpull:\u003ccode\u003e274\u003c/code\u003e by :ghuser:\u003ccode\u003egrayjk\u003c/code\u003e\nmerged as :ghpull:\u003ccode\u003e275\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eintroduced :meth:\u003ccode\u003e~Terminal.get_fgcolor\u003c/code\u003e and :meth:\u003ccode\u003e~Terminal.get_bgcolor\u003c/code\u003e to query\nthe terminal for the currently set colors. :ghissue:\u003ccode\u003e237\u003c/code\u003e by :ghuser:\u003ccode\u003estefanholek\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebugfix: Copy globals dict before iterating to avoid RuntimeError in multithreaded\napplications, :ghissue:\u003ccode\u003e248\u003c/code\u003e by :ghuser:\u003ccode\u003eadamnovak\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eintroduced :meth:\u003ccode\u003e~Terminal.truncate\u003c/code\u003e to truncate a string while\nretaining the sequences, :ghissue:\u003ccode\u003e211\u003c/code\u003e by :ghuser:\u003ccode\u003efishermans-friend\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eenhancement: Add small sleep in :meth:\u003ccode\u003e~Terminal.kbhit\u003c/code\u003e on Windows\nto reduce CPU load :ghissue:\u003ccode\u003e209\u003c/code\u003e by :ghuser:\u003ccode\u003enumerlor\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eenhancement: :meth:\u003ccode\u003e~Terminal.rjust\u003c/code\u003e, :meth:\u003ccode\u003e~Terminal.ljust\u003c/code\u003e,\nand :meth:\u003ccode\u003e~Terminal.center\u003c/code\u003e now accept :class:\u003ccode\u003e~typing.SupportsIndex\u003c/code\u003e types, :ghissue:\u003ccode\u003e234\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eenhancement: When 88 colors is detected, it is now interpreted as 16 colors rather than raising\nan :exc:\u003ccode\u003eAssertionError\u003c/code\u003e, :ghissue:\u003ccode\u003e235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebugfix: Fix global variable declarations in type annotations, :ghissue:\u003ccode\u003e230\u003c/code\u003e by\n:ghuser:\u003ccode\u003emwchase\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ebugfix: :meth:\u003ccode\u003e~Terminal.split_seqs\u003c/code\u003e for some sequences\nlike \u003ccode\u003eterm.move_left(3)\u003c/code\u003e, :ghissue:\u003ccode\u003e197\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eintroduced: type annotations, :ghissue:\u003ccode\u003e192\u003c/code\u003e by :ghuser:\u003ccode\u003edlax\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003ebugfix: do not fail when \u003ccode\u003esys.stdin\u003c/code\u003e is unset, :ghissue:\u003ccode\u003e195\u003c/code\u003e by\n:ghuser:\u003ccode\u003eOlen\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003edocfix: correct \u0026quot;Bottom of the screen\u0026quot; example to use \u003ccode\u003eend=''\u003c/code\u003e and\ndocument about it in location.rst, :ghissue:\u003ccode\u003e188\u003c/code\u003e by :ghuser:\u003ccode\u003epyfisch\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/jquast/blessed/commit/6181f5ab2e3682d997a96030a3b72c09346e72f5\"\u003e\u003ccode\u003e6181f5a\u003c/code\u003e\u003c/a\u003e Set version 1.22 for release (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/17d7a9290f0239f5916607e281d12c4edcee7330\"\u003e\u003ccode\u003e17d7a92\u003c/code\u003e\u003c/a\u003e Unpin docformatter (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/292\"\u003e#292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/c53146db93c5673e56352897a075d7a18c7ca611\"\u003e\u003ccode\u003ec53146d\u003c/code\u003e\u003c/a\u003e Use tool \u0026quot;codespell\u0026quot; in tox 'lint' step (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/99cb338d9d3d5faf01938cc48f3bef3a3739f0a4\"\u003e\u003ccode\u003e99cb338\u003c/code\u003e\u003c/a\u003e Optimize Sequence.padd for non-horizontal sequences (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/4b54fd3c753a56947050f2762b33c5180461853d\"\u003e\u003ccode\u003e4b54fd3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/289\"\u003e#289\u003c/a\u003e from grayjk/perf-wrap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/f35409ecb96fd984c6a4c64e1771e029ebccbf8f\"\u003e\u003ccode\u003ef35409e\u003c/code\u003e\u003c/a\u003e wrap perf improvement when breaking long words\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/fb213bf7ab88b1c8a132ad546e8beeb913ff0dfc\"\u003e\u003ccode\u003efb213bf\u003c/code\u003e\u003c/a\u003e Optimize Sequence.padd() (\u003ca href=\"https://redirect.github.com/jquast/blessed/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/f836ccad5fae80fad84fd919bb6963b6079999c8\"\u003e\u003ccode\u003ef836cca\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jquast/blessed/issues/286\"\u003e#286\u003c/a\u003e from grayjk/fix-285\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/8977680aa451173901df60931e90c42f35735b76\"\u003e\u003ccode\u003e8977680\u003c/code\u003e\u003c/a\u003e early return from Sequence.padd\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed/commit/81d5d2771818b1fcc8f8213642ab3ffe060051e9\"\u003e\u003ccode\u003e81d5d27\u003c/code\u003e\u003c/a\u003e Use a separate job to upload coverage for older python versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jquast/blessed/compare/1.20.0...1.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.4.0 to 5.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.5.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emake the tests run on python 3.13 for gcs backend by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9677\"\u003ecelery/celery#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded DeepWiki to README by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9683\"\u003ecelery/celery#9683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit redis to \u0026lt;=v5.2.1 to match Kombu by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9693\"\u003ecelery/celery#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse EX_OK instead of literal zero by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9684\"\u003ecelery/celery#9684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake wheel metadata reproducible by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9687\"\u003ecelery/celery#9687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003elet celery install from kombu dependencies for better align by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9696\"\u003ecelery/celery#9696\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix stamping documentation to clarify stamped_headers key is optional in visitor methods by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9697\"\u003ecelery/celery#9697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport apply_async without queue argument on quorum queues by \u003ca href=\"https://github.com/bityob\"\u003e\u003ccode\u003e@​bityob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9686\"\u003ecelery/celery#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated rabbitmq doc about using quorum queues with task routes by \u003ca href=\"https://github.com/bityob\"\u003e\u003ccode\u003e@​bityob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9707\"\u003ecelery/celery#9707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd: Dumper Unit Test by \u003ca href=\"https://github.com/yiyu0x\"\u003e\u003ccode\u003e@​yiyu0x\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9711\"\u003ecelery/celery#9711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd unit test for event.group_from by \u003ca href=\"https://github.com/rogerforlife\"\u003e\u003ccode\u003e@​rogerforlife\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9709\"\u003ecelery/celery#9709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: add beat_cron_starting_deadline documentation warning by \u003ca href=\"https://github.com/alirafiei75\"\u003e\u003ccode\u003e@​alirafiei75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9712\"\u003ecelery/celery#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve issue \u003ca href=\"https://redirect.github.com/celery/celery/issues/9569\"\u003e#9569\u003c/a\u003e by supporting distinct broker transport options for workers by \u003ca href=\"https://github.com/yiyu0x\"\u003e\u003ccode\u003e@​yiyu0x\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9695\"\u003ecelery/celery#9695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes issue with retry callback arguments in DelayedDelivery by \u003ca href=\"https://github.com/maccinza\"\u003e\u003ccode\u003e@​maccinza\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9708\"\u003ecelery/celery#9708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eget_exchange-unit-test by \u003ca href=\"https://github.com/rogerforlife\"\u003e\u003ccode\u003e@​rogerforlife\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9710\"\u003ecelery/celery#9710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eISSUE-9704: Update documentation of result_expires, filesystem backend is supported by \u003ca href=\"https://github.com/MattiasDC\"\u003e\u003ccode\u003e@​MattiasDC\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9716\"\u003ecelery/celery#9716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate to blacksmith ubuntu 24.04 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9717\"\u003ecelery/celery#9717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded unit tests for celery.utils.iso8601 by \u003ca href=\"https://github.com/jaiganeshs21\"\u003e\u003ccode\u003e@​jaiganeshs21\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9725\"\u003ecelery/celery#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate introduction.rst docs by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9728\"\u003ecelery/celery#9728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.5.3 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9732\"\u003ecelery/celery#9732\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/bityob\"\u003e\u003ccode\u003e@​bityob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9686\"\u003ecelery/celery#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yiyu0x\"\u003e\u003ccode\u003e@​yiyu0x\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9711\"\u003ecelery/celery#9711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rogerforlife\"\u003e\u003ccode\u003e@​rogerforlife\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9709\"\u003ecelery/celery#9709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alirafiei75\"\u003e\u003ccode\u003e@​alirafiei75\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9712\"\u003ecelery/celery#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/maccinza\"\u003e\u003ccode\u003e@​maccinza\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9708\"\u003ecelery/celery#9708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MattiasDC\"\u003e\u003ccode\u003e@​MattiasDC\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9716\"\u003ecelery/celery#9716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaiganeshs21\"\u003e\u003ccode\u003e@​jaiganeshs21\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9725\"\u003ecelery/celery#9725\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.5.2...v5.5.3\"\u003ehttps://github.com/celery/celery/compare/v5.5.2...v5.5.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.5.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculating remaining time across DST changes by \u003ca href=\"https://github.com/imrivera\"\u003e\u003ccode\u003e@​imrivera\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9669\"\u003ecelery/celery#9669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetup_logger\u003c/code\u003e from COMPAT_MODULES by \u003ca href=\"https://github.com/rconradharris\"\u003e\u003ccode\u003e@​rconradharris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9668\"\u003ecelery/celery#9668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mongodb bullet and fix github links in contributions section by \u003ca href=\"https://github.com/jabberwock404\"\u003e\u003ccode\u003e@​jabberwock404\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9672\"\u003ecelery/celery#9672\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.5.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9675\"\u003ecelery/celery#9675\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/imrivera\"\u003e\u003ccode\u003e@​imrivera\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9669\"\u003ecelery/celery#9669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rconradharris\"\u003e\u003ccode\u003e@​rconradharris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9668\"\u003ecelery/celery#9668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jabberwock404\"\u003e\u003ccode\u003e@​jabberwock404\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9672\"\u003ecelery/celery#9672\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.5.1...v5.5.2\"\u003ehttps://github.com/celery/celery/compare/v5.5.1...v5.5.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.5.1\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.5.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-06-01\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- make the tests run on python 3.13 for gcs backend ([#9677](https://github.com/celery/celery/issues/9677))\n- Added DeepWiki to README ([#9683](https://github.com/celery/celery/issues/9683))\n- Limit redis to \u0026lt;=v5.2.1 to match Kombu ([#9693](https://github.com/celery/celery/issues/9693))\n- Use EX_OK instead of literal zero ([#9684](https://github.com/celery/celery/issues/9684))\n- Make wheel metadata reproducible ([#9687](https://github.com/celery/celery/issues/9687))\n- let celery install from kombu dependencies for better align ([#9696](https://github.com/celery/celery/issues/9696))\n- Fix stamping documentation to clarify stamped_headers key is optional in visitor methods ([#9697](https://github.com/celery/celery/issues/9697))\n- Support apply_async without queue argument on quorum queues ([#9686](https://github.com/celery/celery/issues/9686))\n- Updated rabbitmq doc about using quorum queues with task routes ([#9707](https://github.com/celery/celery/issues/9707))\n- Add: Dumper Unit Test ([#9711](https://github.com/celery/celery/issues/9711))\n- Add unit test for event.group_from ([#9709](https://github.com/celery/celery/issues/9709))\n- refactor: add beat_cron_starting_deadline documentation warning ([#9712](https://github.com/celery/celery/issues/9712))\n- fix: resolve issue [#9569](https://github.com/celery/celery/issues/9569) by supporting distinct broker transport options for workers ([#9695](https://github.com/celery/celery/issues/9695))\n- Fixes issue with retry callback arguments in DelayedDelivery ([#9708](https://github.com/celery/celery/issues/9708))\n- get_exchange-unit-test ([#9710](https://github.com/celery/celery/issues/9710))\n- ISSUE-9704: Update documentation of result_expires, filesystem backend is supported ([#9716](https://github.com/celery/celery/issues/9716))\n- update to blacksmith ubuntu 24.04 ([#9717](https://github.com/celery/celery/issues/9717))\n- Added unit tests for celery.utils.iso8601 ([#9725](https://github.com/celery/celery/issues/9725))\n- Update introduction.rst docs ([#9728](https://github.com/celery/celery/issues/9728))\n- Prepare for release: v5.5.3 ([#9732](https://github.com/celery/celery/issues/9732))\n\u003cp\u003e.. _version-5.5.2:\u003c/p\u003e\n\u003ch1\u003e5.5.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-04-25\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculating remaining time across DST changes (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9669\"\u003e#9669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetup_logger\u003c/code\u003e from COMPAT_MODULES (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9668\"\u003e#9668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mongodb bullet and fix github links in contributions section (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9672\"\u003e#9672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.5.2 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9675\"\u003e#9675\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.5.1:\u003c/p\u003e\n\u003ch1\u003e5.5.1\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/celery/celery/commit/088c39c0f78b23a9cdf8d1c9e265ea64d02cfd86\"\u003e\u003ccode\u003e088c39c\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.5.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9732\"\u003e#9732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0c1c52b7c361b65c286b30b13973df741799f4ea\"\u003e\u003ccode\u003e0c1c52b\u003c/code\u003e\u003c/a\u003e Update introduction.rst docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9728\"\u003e#9728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/778b009ffbad7c7d8061a4e7cc4c4445ec541da3\"\u003e\u003ccode\u003e778b009\u003c/code\u003e\u003c/a\u003e Added unit tests for celery.utils.iso8601 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9725\"\u003e#9725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/b00c1446d809b8909c4932674c49a7659838aaa6\"\u003e\u003ccode\u003eb00c144\u003c/code\u003e\u003c/a\u003e update to blacksmith ubuntu 24.04\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5aae2ca5f455e148cd59de89907459265c5b81fc\"\u003e\u003ccode\u003e5aae2ca\u003c/code\u003e\u003c/a\u003e ISSUE-9704: Update documentation of , filesystem backend is supported if cele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/7cf9d8987017ee6414644ff7bf32756860255d2a\"\u003e\u003ccode\u003e7cf9d89\u003c/code\u003e\u003c/a\u003e get_exchange-unit-test (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9710\"\u003e#9710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/b06e53f324f0cfe2b1c98b99d7a8a158d7034dea\"\u003e\u003ccode\u003eb06e53f\u003c/code\u003e\u003c/a\u003e Fixes issue with retry callback argument types in DelayedDelivery (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9708\"\u003e#9708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/b6cab29e6932f100c9f30706ce2600ccff5e14e3\"\u003e\u003ccode\u003eb6cab29\u003c/code\u003e\u003c/a\u003e fix: resolve issue \u003ca href=\"https://redirect.github.com/celery/celery/issues/9569\"\u003e#9569\u003c/a\u003e by supporting distinct broker transport options for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5fc068cd4561ddddebaa5abdde947a90105fa59e\"\u003e\u003ccode\u003e5fc068c\u003c/code\u003e\u003c/a\u003e refactor: add beat_cron_starting_deadline documentation warning (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c7bb67f7412c61477473299ae2f251d5731be3c1\"\u003e\u003ccode\u003ec7bb67f\u003c/code\u003e\u003c/a\u003e Add unit test for event.group_from (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9709\"\u003e#9709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.4.0...v5.5.3\"\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.0 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.1\u003c/h2\u003e\n\u003ch2\u003e🚀 We're still raising awareness around HTTP/2, and HTTP/3!\u003c/h2\u003e\n\u003cp\u003eDid you know that Internet Explorer 11 shipped with an optional HTTP/2 support back in 2013? also libcurl did ship it in 2014[...]\nUsing Requests today is the rough equivalent of using EOL Windows 8!  We promptly invite Python developers to look at the first drop-in replacement for Requests, \u003ca href=\"https://github.com/jawah/niquests\"\u003enamely Niquests\u003c/a\u003e. Ship with native WebSocket, SSE, Happy Eyeballs, DNS over HTTPS, and so on[...] All of this while remaining compatible with all Requests prior plug-ins / add-ons.\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/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.0...3.4.1\"\u003e3.4.1\u003c/a\u003e (2024-12-24)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProject metadata are now stored using \u003ccode\u003epyproject.toml\u003c/code\u003e instead of \u003ccode\u003esetup.cfg\u003c/code\u003e using setuptools as the build backend.\u003c/li\u003e\n\u003cli\u003eEnforce annotation delayed loading for a simpler and consistent types in the project.\u003c/li\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.14 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\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/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....\n\n_Description has been truncated_","html_url":"https://github.com/laxmanchandrarana/lcrportfolio-django-cookiecutter/pull/41","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/laxmanchandrarana%2Flcrportfolio-django-cookiecutter/issues/41","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-10-17T02:03:50.715Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"2922551234","node_id":"PR_kwDOO7JJJ86uMpfC","number":41,"state":"closed","title":"build(deps): bump the python group across 1 directory with 56 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-10-17T02:03:50.715Z","updated_at":"2026-03-15T17:30:49.320Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":56,"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":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.15.1","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.3","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.37.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.12.1"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.10"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.11.0","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 56 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| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.41.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.15.1` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.3` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.37.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.12.1` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.10` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.1` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.11.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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\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\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/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 `certifi` from 2025.1.31 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.01.31...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.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/4bb46c2949fc67a1f8e74c43776833d81df471ed\"\u003e\u003ccode\u003e4bb46c2\u003c/code\u003e\u003c/a\u003e Add Kazakh(kk) locale support (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9713\"\u003e#9713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e454758fb6edf1dcf5aa5417a388b940c871469c\"\u003e\u003ccode\u003ee454758\u003c/code\u003e\u003c/a\u003e Fix regression in unique_together validation with SerializerMethodField (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/33d59fefaa5af04f4bed9312239eb1e5e6def2a2\"\u003e\u003ccode\u003e33d59fe\u003c/code\u003e\u003c/a\u003e Update Spanish translations (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9701\"\u003e#9701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0202a0aa5cbaf8573458b932878dfd5044c93ab\"\u003e\u003ccode\u003ec0202a0\u003c/code\u003e\u003c/a\u003e Update Django documentation links to use stable version (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9698\"\u003e#9698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.1\"\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 `filelock` from 3.13.4 to 3.20.0\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.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tox.toml to sdist by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate docs with example by \u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 3.14 support and drop 3.9 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/448\"\u003etox-dev/filelock#448\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/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\u003c/a\u003e\u003c/p\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\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIndicate that locks are exclusive/write locks. by \u003ca href=\"https://github.com/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport fcntl check on Emscripten by \u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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.17.0...3.18.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.17.0...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDrop 3.8\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/f7c3f8ea7defc21b3f0d736bb36711769cce840e\"\u003e\u003ccode\u003ef7c3f8e\u003c/code\u003e\u003c/a\u003e Add 3.14 support and drop 3.9 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/a95eec6245de176cf5aaaa95c187ce688d697277\"\u003e\u003ccode\u003ea95eec6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f3e532fd35dbe480b25362a0e8b8e0aa41040c3f\"\u003e\u003ccode\u003ef3e532f\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1eff49a2aeb69f905a1ab9dc442fab5d7c601a3c\"\u003e\u003ccode\u003e1eff49a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/3c9448adeaebc0157cf5745dc5c40167678cf171\"\u003e\u003ccode\u003e3c9448a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/09f59904c1cadafaaa5b09b0d7ee8aa3b85c64f5\"\u003e\u003ccode\u003e09f5990\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/5011a34d2881199529c6f25bd38b26314340bbde\"\u003e\u003ccode\u003e5011a34\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/32372aa24897128b7c891d1c6b783ad368c7f114\"\u003e\u003ccode\u003e32372aa\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/441\"\u003e#441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1af28f256cb6093e354aced4b4de15a483ddb827\"\u003e\u003ccode\u003e1af28f2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66bcdb30cba57b8ee3dfb20b63aada74969afd81\"\u003e\u003ccode\u003e66bcdb3\u003c/code\u003e\u003c/a\u003e Update docs with example (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.13.4...3.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.41.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.41.0...v2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress deprecation warning for ADC (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1815\"\u003e#1815\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/751ce3f625eb24029e9f0c59c081bdd3e18eb583\"\u003e751ce3f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.3...v2.41.0\"\u003e2.41.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for cachetools 6.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1773\"\u003e#1773\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commi...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/41","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/41","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-10-15T02:02:25.498Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"2915460641","node_id":"PR_kwDOO7JJJ86txmYh","number":40,"state":"open","title":"build(deps): bump the python group across 1 directory with 57 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-10-15T02:02:25.498Z","updated_at":"2025-10-16T15:20:36.059Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":57,"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":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.14.2","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.2","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.37.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.12.0"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.10"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.10.7","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 57 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| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.41.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.14.2` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.2` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.2.1` | `3.3.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.37.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.12.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.10` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.10.7` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `certifi` from 2025.1.31 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.01.31...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.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/4bb46c2949fc67a1f8e74c43776833d81df471ed\"\u003e\u003ccode\u003e4bb46c2\u003c/code\u003e\u003c/a\u003e Add Kazakh(kk) locale support (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9713\"\u003e#9713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e454758fb6edf1dcf5aa5417a388b940c871469c\"\u003e\u003ccode\u003ee454758\u003c/code\u003e\u003c/a\u003e Fix regression in unique_together validation with SerializerMethodField (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/33d59fefaa5af04f4bed9312239eb1e5e6def2a2\"\u003e\u003ccode\u003e33d59fe\u003c/code\u003e\u003c/a\u003e Update Spanish translations (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9701\"\u003e#9701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0202a0aa5cbaf8573458b932878dfd5044c93ab\"\u003e\u003ccode\u003ec0202a0\u003c/code\u003e\u003c/a\u003e Update Django documentation links to use stable version (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9698\"\u003e#9698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.1\"\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 `filelock` from 3.13.4 to 3.20.0\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.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tox.toml to sdist by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate docs with example by \u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 3.14 support and drop 3.9 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/448\"\u003etox-dev/filelock#448\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/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\u003c/a\u003e\u003c/p\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\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIndicate that locks are exclusive/write locks. by \u003ca href=\"https://github.com/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport fcntl check on Emscripten by \u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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.17.0...3.18.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.17.0...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDrop 3.8\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/f7c3f8ea7defc21b3f0d736bb36711769cce840e\"\u003e\u003ccode\u003ef7c3f8e\u003c/code\u003e\u003c/a\u003e Add 3.14 support and drop 3.9 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/a95eec6245de176cf5aaaa95c187ce688d697277\"\u003e\u003ccode\u003ea95eec6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f3e532fd35dbe480b25362a0e8b8e0aa41040c3f\"\u003e\u003ccode\u003ef3e532f\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1eff49a2aeb69f905a1ab9dc442fab5d7c601a3c\"\u003e\u003ccode\u003e1eff49a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/3c9448adeaebc0157cf5745dc5c40167678cf171\"\u003e\u003ccode\u003e3c9448a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/09f59904c1cadafaaa5b09b0d7ee8aa3b85c64f5\"\u003e\u003ccode\u003e09f5990\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/5011a34d2881199529c6f25bd38b26314340bbde\"\u003e\u003ccode\u003e5011a34\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/32372aa24897128b7c891d1c6b783ad368c7f114\"\u003e\u003ccode\u003e32372aa\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/441\"\u003e#441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1af28f256cb6093e354aced4b4de15a483ddb827\"\u003e\u003ccode\u003e1af28f2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66bcdb30cba57b8ee3dfb20b63aada74969afd81\"\u003e\u003ccode\u003e66bcdb3\u003c/code\u003e\u003c/a\u003e Update docs with example (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.13.4...3.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.41.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.41.0...v2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress deprecation warning for ADC (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1815\"\u003e#1815\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/751ce3f625eb24029e9f0c59c081bdd3e18eb583\"\u003e751ce3f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.3...v2.41.0\"\u003e2.41.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for cachetools 6.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1773\"\u003e#1773\u003c/a\u003e) (\u003ca href...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/40","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/40","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/40/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-10-13T00:47:06.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3508119123","node_id":"PR_kwDOO7JJJ86tXG2W","number":39,"state":"closed","title":"build(deps): bump the python group across 1 directory with 55 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-15T00:27:20.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T00:47:06.000Z","updated_at":"2025-10-15T00:27:22.000Z","time_to_close":171614,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":55,"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":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.14.2","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.2","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.37.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.12.0"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.10"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.7"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.10.7","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 55 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| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.3` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.20.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.41.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.14.2` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.5.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.2` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.2` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.37.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.12.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.10` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.10.7` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `certifi` from 2025.1.31 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.01.31...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.1 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\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/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.1...3.4.3\"\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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/4bb46c2949fc67a1f8e74c43776833d81df471ed\"\u003e\u003ccode\u003e4bb46c2\u003c/code\u003e\u003c/a\u003e Add Kazakh(kk) locale support (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9713\"\u003e#9713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e454758fb6edf1dcf5aa5417a388b940c871469c\"\u003e\u003ccode\u003ee454758\u003c/code\u003e\u003c/a\u003e Fix regression in unique_together validation with SerializerMethodField (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/33d59fefaa5af04f4bed9312239eb1e5e6def2a2\"\u003e\u003ccode\u003e33d59fe\u003c/code\u003e\u003c/a\u003e Update Spanish translations (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9701\"\u003e#9701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0202a0aa5cbaf8573458b932878dfd5044c93ab\"\u003e\u003ccode\u003ec0202a0\u003c/code\u003e\u003c/a\u003e Update Django documentation links to use stable version (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9698\"\u003e#9698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.1\"\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 `filelock` from 3.13.4 to 3.20.0\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.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tox.toml to sdist by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate docs with example by \u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 3.14 support and drop 3.9 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/448\"\u003etox-dev/filelock#448\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/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.1...3.20.0\u003c/a\u003e\u003c/p\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\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIndicate that locks are exclusive/write locks. by \u003ca href=\"https://github.com/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport fcntl check on Emscripten by \u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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.17.0...3.18.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.17.0...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDrop 3.8\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/f7c3f8ea7defc21b3f0d736bb36711769cce840e\"\u003e\u003ccode\u003ef7c3f8e\u003c/code\u003e\u003c/a\u003e Add 3.14 support and drop 3.9 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/a95eec6245de176cf5aaaa95c187ce688d697277\"\u003e\u003ccode\u003ea95eec6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f3e532fd35dbe480b25362a0e8b8e0aa41040c3f\"\u003e\u003ccode\u003ef3e532f\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6 to 7 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1eff49a2aeb69f905a1ab9dc442fab5d7c601a3c\"\u003e\u003ccode\u003e1eff49a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/3c9448adeaebc0157cf5745dc5c40167678cf171\"\u003e\u003ccode\u003e3c9448a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/09f59904c1cadafaaa5b09b0d7ee8aa3b85c64f5\"\u003e\u003ccode\u003e09f5990\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/5011a34d2881199529c6f25bd38b26314340bbde\"\u003e\u003ccode\u003e5011a34\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/32372aa24897128b7c891d1c6b783ad368c7f114\"\u003e\u003ccode\u003e32372aa\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/441\"\u003e#441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1af28f256cb6093e354aced4b4de15a483ddb827\"\u003e\u003ccode\u003e1af28f2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66bcdb30cba57b8ee3dfb20b63aada74969afd81\"\u003e\u003ccode\u003e66bcdb3\u003c/code\u003e\u003c/a\u003e Update docs with example (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.13.4...3.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.41.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.41.0...v2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress deprecation warning for ADC (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1815\"\u003e#1815\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/751ce3f625eb24029e9f0c59c081bdd3e18eb583\"\u003e751ce3f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.3...v2.41.0\"\u003e2.41.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for cachetools 6.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1773\"\u003e#1773\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/af18060d521baf86c219d66a26631decb3b28e79\"\u003eaf18060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd trust boundary support for service accounts and impersonation. (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1778\"\u003e#1778\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/99be2ce19401296718f880c7a80cd2e841df78bf\"\u003e99be2ce\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecating \u003ca href=\"https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.load_credentials_from_dict\"\u003eload_credentials_from_dict\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/58b66ec8069bfe5304c7da512fe89a8e838ce1ca\"\u003e58b66ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecating \u003ca href=\"https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.load_credentials_from_file\"\u003eload_credentials_from_file\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/58b66ec8069bfe5304c7da512fe89a8e838ce1ca\"\u003e58b66ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix type error in credentials.py for python 3.7 and 3.8 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1805\"\u003e#1805\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/c30a6a781d3e385598a0ac28a370a7f4800010cc\"\u003ec30a6a7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate user guide to include x509 feature. (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1802\"\u003e#1802\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/2d89ab4d85568564e1f462f5b463991ffd9b82b1\"\u003e2d89ab4...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/39","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/39","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/39/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-10-08T00:30:03.000Z","version_change":"3.2.2 → 3.3.1","issue":{"uuid":"3493427171","node_id":"PR_kwDOO7JJJ86smLWu","number":37,"state":"closed","title":"build(deps): bump the python group across 1 directory with 54 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-13T00:35:31.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-08T00:30:03.000Z","updated_at":"2025-10-13T00:35:33.000Z","time_to_close":432328,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":54,"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":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"djangorestframework","old_version":"3.15.2","new_version":"3.16.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.13.4","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"hatch","old_version":"1.14.1","new_version":"1.14.2","repository_url":"https://github.com/pypa/hatch"},{"name":"httpcore","old_version":"1.0.7","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"importlib-metadata","old_version":"8.6.1","new_version":"8.7.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.1.0","new_version":"4.3.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"more-itertools","old_version":"10.6.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"platformdirs","old_version":"4.2.0","new_version":"4.4.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pycryptodome","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"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":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"sqlparse","old_version":"0.5.1","new_version":"0.5.3","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tomlkit","old_version":"0.13.2","new_version":"0.13.3","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"trove-classifiers","old_version":"2025.3.19.19","new_version":"2025.9.11.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uv","old_version":"0.6.13","new_version":"0.9.0","repository_url":"https://github.com/astral-sh/uv"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.34.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"rcssmin","old_version":"1.1.2","new_version":"1.2.1","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"whitenoise","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"redis","old_version":"6.2.0","new_version":"6.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"uvicorn","old_version":"0.34.3","new_version":"0.37.0"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"django-allauth","old_version":"65.9.0","new_version":"65.12.0"},{"name":"psycopg","old_version":"3.2.9","new_version":"3.2.10"},{"name":"django-anymail","old_version":"13.0","new_version":"13.1"},{"name":"django-stubs","old_version":"5.2.1","new_version":"5.2.6"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"ruff","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.9.1","new_version":"7.10.7","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-coverage-plugin","old_version":"3.1.1","new_version":"3.2.0","repository_url":"https://github.com/nedbat/django_coverage_plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 54 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| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.3` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.15.2` | `3.16.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.4` | `3.19.1` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.41.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [hatch](https://github.com/pypa/hatch) | `1.14.1` | `1.14.2` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.7` | `1.0.9` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.0` | `4.4.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [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| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.1` | `0.5.3` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.2` | `0.13.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2025.3.19.19` | `2025.9.11.17` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.6.13` | `0.9.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.34.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.1.2` | `1.2.1` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.11.0` |\n| [redis](https://github.com/redis/redis-py) | `6.2.0` | `6.4.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.34.3` | `0.37.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.9.0` | `65.12.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.2.9` | `3.2.10` |\n| [django-anymail[amazon-ses]](https://github.com/anymail/django-anymail) | `13.0` | `13.1` |\n| [django-stubs[compatible-mypy]](https://github.com/sponsors/typeddjango) | `5.2.1` | `5.2.6` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.0` | `0.14.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.9.1` | `7.10.7` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [django-coverage-plugin](https://github.com/nedbat/django_coverage_plugin) | `3.1.1` | `3.2.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 `certifi` from 2025.1.31 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.01.31...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.1 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\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/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.1...3.4.3\"\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.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\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/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.8 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.3.9\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eReleased: 2024-10-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMerge \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/215\"\u003e#215\u003c/a\u003e: preload script wrappers on Windows to assist with a pip issue (thanks,\nPaul Moore).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/220\"\u003e#220\u003c/a\u003e: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/230\"\u003e#230\u003c/a\u003e: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/224\"\u003e#224\u003c/a\u003e: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/222\"\u003e#222\u003c/a\u003e: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,\nStewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/225\"\u003e#225\u003c/a\u003e: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.8...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.15.2 to 3.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.1\u003c/h2\u003e\n\u003cp\u003eThis release fixes a few bugs, clean-up some old code paths for unsupported Python versions and improve translations.\u003c/p\u003e\n\u003ch2\u003eMinor changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup optional \u003ccode\u003ebackports.zoneinfo\u003c/code\u003e dependency and conditions on unsupported Python 3.8 and lower in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9681\"\u003e#9681\u003c/a\u003e. Python versions prior to 3.9 were already unsupported so this isn't considered as a breaking change.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression in \u003ccode\u003eunique_together\u003c/code\u003e validation with \u003ccode\u003eSerializerMethodField\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9712\"\u003e#9712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e to handle fields with \u003ccode\u003esource\u003c/code\u003e attribute in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9688\"\u003e#9688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop HTML line breaks on long headers in browsable API in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9438\"\u003e#9438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTranslations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Kazakh locale support in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9713\"\u003e#9713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate translations for Korean translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9571\"\u003e#9571\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate German translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Chinese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Arabic translations-sal in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9595\"\u003e#9595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Persian translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9576\"\u003e#9576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Spanish translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9701\"\u003e#9701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Turkish Translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9749\"\u003e#9749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix some typos in Brazilian Portuguese translations in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved reference to GitHub Issues and Discussions in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edrf-restwind\u003c/code\u003e and update outdated images in \u003ccode\u003ebrowsable-api.md\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9680\"\u003e#9680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated funding page to represent current scope in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9686\"\u003e#9686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken Heroku JSON Schema link in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9693\"\u003e#9693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django documentation links to use stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9698\"\u003e#9698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand docs on unique constraints cause 'required=True' in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9725\"\u003e#9725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert extension back from \u003ccode\u003edjangorestframework-guardian2\u003c/code\u003e to \u003ccode\u003edjangorestframework-guardian\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9734\"\u003e#9734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note to tutorial about required \u003ccode\u003erequest\u003c/code\u003e in serializer context when using \u003ccode\u003eHyperlinkedModelSerializer\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9732\"\u003e#9732\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate GitHub Actions to use Ubuntu 24.04 for testing in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9677\"\u003e#9677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate test matrix to use Django 5.2 stable version in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epyupgrade\u003c/code\u003e to \u003ccode\u003epre-commit\u003c/code\u003e hooks in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix test with Django 5 when \u003ccode\u003epytz\u003c/code\u003e is available in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9715\"\u003e#9715\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/araggohnxd\"\u003e\u003ccode\u003e@​araggohnxd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9673\"\u003e#9673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mbeijen\"\u003e\u003ccode\u003e@​mbeijen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9660\"\u003e#9660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9676\"\u003e#9676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ren000thomas\"\u003e\u003ccode\u003e@​ren000thomas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9675\"\u003e#9675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9682\"\u003e#9682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/de018df2aaacb1d2d947c0cfbfaa6d08fb50557d\"\u003e\u003ccode\u003ede018df\u003c/code\u003e\u003c/a\u003e Prepare 3.16.1 release (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9752\"\u003e#9752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/a7d050f5b3388ed9dc69c7770fdbd9654d4639ae\"\u003e\u003ccode\u003ea7d050f\u003c/code\u003e\u003c/a\u003e Turkish Translation updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9749\"\u003e#9749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/853969c69c815be69513c2f63a41285858a45352\"\u003e\u003ccode\u003e853969c\u003c/code\u003e\u003c/a\u003e Fix test with Django 5 when pytz is available (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9715\"\u003e#9715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/2ae8c117dae5d7912760492a1df397e2fcd8c7a4\"\u003e\u003ccode\u003e2ae8c11\u003c/code\u003e\u003c/a\u003e Add note to tutorial about required request in serializer context when using ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/70e54f45add6a96f92bbadbcff30fc211f2ce0c3\"\u003e\u003ccode\u003e70e54f4\u003c/code\u003e\u003c/a\u003e Revert docs back to djangorestframework-guardian (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9734\"\u003e#9734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30384947053b1f2b2c9e82cafd1da934d3442a61\"\u003e\u003ccode\u003e3038494\u003c/code\u003e\u003c/a\u003e Document that unique constraints cause \u003ccode\u003erequired=True\u003c/code\u003e in ModelSerializer (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9\"\u003e#9\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/4bb46c2949fc67a1f8e74c43776833d81df471ed\"\u003e\u003ccode\u003e4bb46c2\u003c/code\u003e\u003c/a\u003e Add Kazakh(kk) locale support (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9713\"\u003e#9713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e454758fb6edf1dcf5aa5417a388b940c871469c\"\u003e\u003ccode\u003ee454758\u003c/code\u003e\u003c/a\u003e Fix regression in unique_together validation with SerializerMethodField (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9712\"\u003e#9712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/33d59fefaa5af04f4bed9312239eb1e5e6def2a2\"\u003e\u003ccode\u003e33d59fe\u003c/code\u003e\u003c/a\u003e Update Spanish translations (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9701\"\u003e#9701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0202a0aa5cbaf8573458b932878dfd5044c93ab\"\u003e\u003ccode\u003ec0202a0\u003c/code\u003e\u003c/a\u003e Update Django documentation links to use stable version (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9698\"\u003e#9698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.1\"\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 `filelock` from 3.13.4 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\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIndicate that locks are exclusive/write locks. by \u003ca href=\"https://github.com/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport fcntl check on Emscripten by \u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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/bicarlsen\"\u003e\u003ccode\u003e@​bicarlsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/394\"\u003etox-dev/filelock#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/juntyr\"\u003e\u003ccode\u003e@​juntyr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/398\"\u003etox-dev/filelock#398\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.17.0...3.18.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.17.0...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDrop 3.8\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.16.1...3.17.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.16.1...3.17.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.16.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCI improvements 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/362\"\u003etox-dev/filelock#362\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.16.0...3.16.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.16.0...3.16.1\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/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.13.4...3.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.41.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.41.0...v2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress deprecation warning for ADC (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1815\"\u003e#1815\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/751ce3f625eb24029e9f0c59c081bdd3e18eb583\"\u003e751ce3f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.3...v2.41.0\"\u003e2.41.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for cachetools 6.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1773\"\u003e#1773\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/af18060d521baf86c219d66a26631decb3b28e79\"\u003eaf18060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd trust boundary support for service accounts and impersonation. (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1778\"\u003e#1778\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/99be2ce19401296718f880c7a80cd2e841df78bf\"\u003e99be2ce\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecating \u003ca href=\"https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.load_credentials_from_dict\"\u003eload_credentials_from_dict\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/58b66ec8069bfe5304c7da512fe89a8e838ce1ca\"\u003e58b66ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecating \u003ca href=\"https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.load_credentials_from_file\"\u003eload_credentials_from_file\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/58b66ec8069bfe5304c7da512fe89a8e838ce1ca\"\u003e58b66ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix type error in credentials.py for python 3.7 and 3.8 (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1805\"\u003e#1805\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/c30a6a781d3e385598a0ac28a370a7f4800010cc\"\u003ec30a6a7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate user guide to include x509 feature. (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1802\"\u003e#1802\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/2d89ab4d85568564e1f462f5b463991ffd9b82b1\"\u003e2d89ab4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.40.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.40.2...v2.40.3\"\u003e2.40.3\u003c/a\u003e (2025-06-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuth fetch token from default endpoint (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1779\"\u003e#1779\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/88891cc596640b0bb3a2891532e2d32f2c9f0ec3\"\u003e88891cc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary call to mds service (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1769\"\u003e#1769\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/7c61c7d0a42ceec3eab693065745a74f524acab0\"\u003e7c61c7d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry 504 errors (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1767\"\u003e#1767\u003c/a\u003e) (\u003ca...\n\n_Description has been truncated_","html_url":"https://github.com/Masjdna/Masjdna/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Masjdna%2FMasjdna/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/packages"}},{"old_version":"3.2.2","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2025-10-06T14:04:10.000Z","version_change":"3.2.2 → 3.3.1","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"}}]}