{"id":5385,"name":"rsa","ecosystem":"pip","repository_url":"https://github.com/sybrenstuvel/python-rsa","issues_count":205,"created_at":"2025-06-06T17:12:38.898Z","updated_at":"2025-06-06T17:12:38.898Z","purl":"pkg:pypi/rsa","metadata":{"id":2906947,"name":"rsa","ecosystem":"pypi","description":"Pure-Python RSA implementation","homepage":"https://stuvel.eu/rsa","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/sybrenstuvel/python-rsa","keywords_array":[],"namespace":null,"versions_count":37,"first_release_published_at":"2008-04-23T11:27:28.000Z","latest_release_published_at":"2025-04-16T09:51:17.000Z","latest_release_number":"4.9.1","last_synced_at":"2025-06-05T00:26:30.574Z","created_at":"2022-04-10T12:30:29.849Z","updated_at":"2025-06-05T00:26:30.575Z","registry_url":"https://pypi.org/project/rsa/","install_command":"pip install rsa --index-url https://pypi.org/simple","documentation_url":"https://rsa.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","Intended Audience :: Education","Intended Audience :: Information Technology","License :: OSI Approved :: Apache Software License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.6","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Security :: Cryptography"],"normalized_name":"rsa"},"repo_metadata":{"id":3567405,"uuid":"50107469","full_name":"sybrenstuvel/python-rsa","owner":"sybrenstuvel","description":"Python-RSA is a pure-Python RSA implementation.","archived":false,"fork":false,"pushed_at":"2024-01-30T12:10:45.000Z","size":1119,"stargazers_count":475,"open_issues_count":20,"forks_count":103,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-05-22T03:44:44.819Z","etag":null,"topics":["python","python-rsa","rsa","rsa-cryptography"],"latest_commit_sha":null,"homepage":"https://stuvel.eu/rsa","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sybrenstuvel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-01-21T12:53:34.000Z","updated_at":"2024-06-05T17:41:47.934Z","dependencies_parsed_at":"2023-01-13T12:37:17.761Z","dependency_job_id":"0c08b816-88ff-44a0-9542-cbd225d33f50","html_url":"https://github.com/sybrenstuvel/python-rsa","commit_stats":{"total_commits":574,"total_committers":44,"mean_commits":"13.045454545454545","dds":0.2961672473867596,"last_synced_commit":"4e7bb7610953d5d54ca7e77c808acc62e35e2987"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sybrenstuvel","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219863928,"owners_count":16554022,"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":"sybrenstuvel","name":"Sybren A. Stüvel","uuid":"1092128","kind":"user","description":"","email":"","website":"https://stuvel.eu/","location":"Amsterdam, The Netherlands","twitter":"sastuvel","company":"Blender Institute","icon_url":"https://avatars.githubusercontent.com/u/1092128?v=4","repositories_count":8,"last_synced_at":"2023-03-24T08:45:41.264Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/sybrenstuvel","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-03T21:10:43.041Z","updated_at":"2023-03-24T08:45:41.367Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sybrenstuvel","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sybrenstuvel/repositories"},"tags":[{"name":"version-4.9","sha":"c4dc7beb04bea05ed86adb2e4b7f780f173774b8","kind":"tag","published_at":"2022-07-20T10:29:04.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.9","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.9/manifests"},{"name":"version-4.8","sha":"47a7db1cce210fe9011535c73c57bf76fcca6820","kind":"tag","published_at":"2021-11-24T10:07:01.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.8","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.8/manifests"},{"name":"version-4.7.2","sha":"87664078fbbd8bd1f84a9dff05bb1d673b696eaa","kind":"commit","published_at":"2021-02-24T10:42:05.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.7.2","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.7.2/manifests"},{"name":"version-4.7.1","sha":"758562f004ead1c999b297334d552b57404c21d2","kind":"tag","published_at":"2021-02-15T20:45:13.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.7.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.7.1/manifests"},{"name":"version-4.7","sha":"fa3282a47457254385f2313c2eceaad4b06186a4","kind":"tag","published_at":"2021-01-10T10:35:56.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.7","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.7/manifests"},{"name":"version-4.6","sha":"cedefea7b455375e5a87200866809be59d718968","kind":"tag","published_at":"2020-06-12T20:25:03.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.6","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.6/manifests"},{"name":"version-4.5","sha":"4834b903bb91fd05a2c9c8d5f4255ae0169ba6e7","kind":"tag","published_at":"2020-06-12T20:22:28.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.5","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.5/manifests"},{"name":"version-4.4.1","sha":"82316704c3b5c28a69a42653e0988560d0673dab","kind":"tag","published_at":"2020-06-12T17:53:07.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.4.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.4.1/manifests"},{"name":"version-4.4","sha":"199544691ff0b34bd42e5c693f2cf0a651424307","kind":"commit","published_at":"2020-06-12T17:41:57.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.4","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.4/manifests"},{"name":"version-4.3","sha":"4d3025ff38c6af4905fd416c7951a74f7bf74ba7","kind":"commit","published_at":"2020-06-12T17:36:19.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.3","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.3/manifests"},{"name":"version-4.2","sha":"c59236793ea4b5b248629de20b3e304be819e49b","kind":"tag","published_at":"2020-06-11T20:14:03.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.2","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.2/manifests"},{"name":"version-4.1","sha":"c6731b1dda461676b998a18004b23a9879378041","kind":"tag","published_at":"2020-06-10T08:36:11.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.1/manifests"},{"name":"version-4.0","sha":"368a31f431f24843189b5d4da6b8530fa8bd47d8","kind":"commit","published_at":"2018-09-16T11:42:15.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-4.0","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-4.0/manifests"},{"name":"version-3.4.2","sha":"fd70d79610ac1af8b072aa27fadf660b4a64797c","kind":"tag","published_at":"2016-03-29T13:21:26.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.4.2","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.4.2/manifests"},{"name":"version-3.4.1","sha":"61b4ac2614a96b78d60d95defe3e3c4bab3f5693","kind":"tag","published_at":"2016-03-26T12:44:34.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.4.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.4.1/manifests"},{"name":"version-3.4","sha":"b25a8347a81ac3d8d7fab97b74244f9fd71bac7f","kind":"tag","published_at":"2016-03-17T12:45:22.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.4","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.4/manifests"},{"name":"version-3.3","sha":"6a1c2abf7502a75b7bb482ad0838cd4e46e26a71","kind":"commit","published_at":"2016-01-21T10:12:33.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.3","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.3/manifests"},{"name":"version-3.2.3","sha":"be41c5375a85f9778dd3cf78932428e47f97fab1","kind":"commit","published_at":"2015-11-05T20:23:54.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.2.3","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.2.3/manifests"},{"name":"version-3.2.2","sha":"b0aacd0a78b0ecdcf71874e230ac5f6caee17503","kind":"commit","published_at":"2015-11-05T15:35:33.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.2.2","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.2.2/manifests"},{"name":"version-3.2.1","sha":"5c1b43405379cb60c6be7c9122a6cc3c1119f883","kind":"commit","published_at":"2015-11-05T15:30:59.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.2.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.2.1/manifests"},{"name":"version-3.2","sha":"0fc2556b719943efdf19fc7b9e0a53419ea3e5fc","kind":"commit","published_at":"2015-07-29T07:24:15.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.2","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.2/manifests"},{"name":"version-3.1.4","sha":"75117e4a1fad188da8599ff18939d1484cc53335","kind":"commit","published_at":"2014-02-22T10:25:25.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.1.4","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1.4/manifests"},{"name":"version-3.1.3","sha":"8449f73b356d360689f77aac61bf2b55f4cb4ef0","kind":"commit","published_at":"2014-02-02T11:05:47.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.1.3","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1.3/manifests"},{"name":"version-3.1.2","sha":"cf665229f579813efba9d3a86ab06d11a85805d0","kind":"commit","published_at":"2013-09-15T09:55:41.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.1.2","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1.2/manifests"},{"name":"version-3.1.1","sha":"a40ed47668b31893c2f859a4d8698207723652c1","kind":"commit","published_at":"2012-06-18T15:15:02.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.1.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1.1/manifests"},{"name":"version-3.1","sha":"9d1681bda458567d6b57fa0d34a81365ce14ed21","kind":"commit","published_at":"2012-06-17T10:06:18.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.1/manifests"},{"name":"version-3.0.1","sha":"844aa2c605b46a19279ed65ab1ebc19e7992d949","kind":"commit","published_at":"2011-08-07T14:12:03.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.0.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.0.1/manifests"},{"name":"version-3.0","sha":"e459baad28b76ab6ed0aa412fa05f5793d66c681","kind":"commit","published_at":"2011-08-05T08:39:20.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-3.0","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-3.0/manifests"},{"name":"version-2.0","sha":"707ce33f66e996dc5c6a4a456e40f152cee240bb","kind":"commit","published_at":"2011-01-09T16:15:28.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-2.0","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-2.0/manifests"},{"name":"version-1.3.3","sha":"95f25fe4079629965da75512eb41b32bbf17da03","kind":"commit","published_at":"2010-02-05T09:37:37.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-1.3.3","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-1.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.3.3/manifests"},{"name":"version-1.3.2","sha":"10caa972ae738090dc057a592ef1d48cf1ef6e73","kind":"commit","published_at":"2010-02-05T08:58:41.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-1.3.2","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.3.2/manifests"},{"name":"version-1.3.1","sha":"4da429dfda5428c5feafb4b30a79eda6a3b7e1d8","kind":"commit","published_at":"2009-01-23T15:13:19.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-1.3.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.3.1/manifests"},{"name":"version-1.3","sha":"3ab60df0b1781ff559ff764b96ee6b7085d0293d","kind":"commit","published_at":"2009-01-22T15:01:58.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-1.3","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.3/manifests"},{"name":"version-1.2","sha":"4c56e82046556a02f39d7e741ff6ee9433cf9eaf","kind":"commit","published_at":"2008-06-06T14:04:29.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-1.2","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.2/manifests"},{"name":"version-1.1","sha":"d3cd52abcbd84e3d8432e49ee9afa858c098f937","kind":"commit","published_at":"2008-04-23T11:23:30.000Z","download_url":"https://codeload.github.com/sybrenstuvel/python-rsa/tar.gz/version-1.1","html_url":"https://github.com/sybrenstuvel/python-rsa/releases/tag/version-1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sybrenstuvel%2Fpython-rsa/tags/version-1.1/manifests"}]},"repo_metadata_updated_at":"2024-09-30T04:59:28.801Z","dependent_packages_count":531,"downloads":308288050,"downloads_period":"last-month","dependent_repos_count":69170,"rankings":{"downloads":0.006786413233872639,"dependent_repos_count":0.019625573406064117,"dependent_packages_count":0.055024972166534916,"stargazers_count":3.81084615568032,"forks_count":5.165560970420409,"docker_downloads_count":0.008253745824980237,"average":1.5110163051220302},"purl":"pkg:pypi/rsa","advisories":[{"uuid":"MDE2OlNlY3VyaXR5QWR2aXNvcnlHSFNBLTUzN2gtcnY5cS12dnBo","url":"https://github.com/advisories/GHSA-537h-rv9q-vvph","title":"Python-RSA decryption of ciphertext leads to DoS","description":"Python-RSA before 4.1 ignores leading '\\0' bytes during decryption of ciphertext. This could conceivably have a security-relevant impact, e.g., by helping an attacker to infer that an application uses Python-RSA, or if the length of accepted ciphertext affects application behavior (such as by causing excessive memory allocation).","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2021-03-24T18:24:39.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":0.0,"cvss_vector":null,"references":["https://nvd.nist.gov/vuln/detail/CVE-2020-13757","https://github.com/sybrenstuvel/python-rsa/issues/146","https://github.com/sybrenstuvel/python-rsa/issues/146#issuecomment-641845667","https://github.com/pypa/advisory-database/tree/main/vulns/rsa/PYSEC-2020-99.yaml","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/2KILTHBHNSDUCYV22ODLOKTICJJ7JQIQ","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/ZYB65VNILRBTXL6EITQTH2PZPK7I23MW","https://usn.ubuntu.com/4478-1","https://github.com/advisories/GHSA-537h-rv9q-vvph"],"source_kind":"github","identifiers":["GHSA-537h-rv9q-vvph","CVE-2020-13757"],"repository_url":"https://github.com/sybrenstuvel/python-rsa","blast_radius":0.0,"packages":[{"versions":[{"first_patched_version":"4.1","vulnerable_version_range":"\u003c 4.1"}],"ecosystem":"pypi","package_name":"rsa"}],"created_at":"2022-12-21T16:13:09.612Z","updated_at":"2025-05-08T02:11:57.628Z","epss_percentage":0.00083,"epss_percentile":0.25509},{"uuid":"MDE2OlNlY3VyaXR5QWR2aXNvcnlHSFNBLXhyeDYtZm14cS1yamoy","url":"https://github.com/advisories/GHSA-xrx6-fmxq-rjj2","title":"Timing attacks in python-rsa","description":"It was found that python-rsa is vulnerable to Bleichenbacher timing attacks. An attacker can use this flaw via the RSA decryption API to decrypt parts of the cipher text encrypted with RSA","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2021-04-30T17:35:15.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":8.2,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N","references":["https://nvd.nist.gov/vuln/detail/CVE-2020-25658","https://github.com/sybrenstuvel/python-rsa/issues/165","https://github.com/sybrenstuvel/python-rsa/commit/dae8ce0d85478e16f2368b2341632775313d41ed","https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2020-25658","https://access.redhat.com/errata/RHSA-2020:5634","https://access.redhat.com/errata/RHSA-2021:0637","https://access.redhat.com/errata/RHSA-2022:1716","https://access.redhat.com/security/cve/CVE-2020-25658","https://bugzilla.redhat.com/show_bug.cgi?id=1889972","https://github.com/advisories/GHSA-xrx6-fmxq-rjj2","https://github.com/pypa/advisory-database/tree/main/vulns/rsa/PYSEC-2020-100.yaml","https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/2SAF67KDGSOHLVFTRDOHNEAFDRSSYIWA","https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/APF364QJ2IYLPDNVFBOEJ24QP2WLVLJP","https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/QY4PJWTYSOV7ZEYZVMYIF6XRU73CY6O7","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/2SAF67KDGSOHLVFTRDOHNEAFDRSSYIWA","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/APF364QJ2IYLPDNVFBOEJ24QP2WLVLJP","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QY4PJWTYSOV7ZEYZVMYIF6XRU73CY6O7"],"source_kind":"github","identifiers":["GHSA-xrx6-fmxq-rjj2","CVE-2020-25658"],"repository_url":"https://github.com/sybrenstuvel/python-rsa","blast_radius":39.68732576056518,"packages":[{"versions":[{"first_patched_version":"4.7","vulnerable_version_range":"\u003e= 2.1, \u003c 4.7"}],"ecosystem":"pypi","package_name":"rsa"}],"created_at":"2022-12-21T16:13:06.855Z","updated_at":"2025-05-08T02:09:02.335Z","epss_percentage":0.00233,"epss_percentile":0.46112},{"uuid":"GSA_kwCzR0hTQS04cmpyLTZxcTUtcGo5cM4AATZV","url":"https://github.com/advisories/GHSA-8rjr-6qq5-pj9p","title":"Python RSA allows attackers to spoof signatures","description":"The verify function in the RSA package for Python (Python-RSA) before 3.3 allows attackers to spoof signatures with a small public exponent via crafted signature padding, aka a BERserk attack.","origin":"UNSPECIFIED","severity":"MODERATE","published_at":"2022-05-14T00:59:49.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":0.0,"cvss_vector":null,"references":["https://nvd.nist.gov/vuln/detail/CVE-2016-1494","https://bitbucket.org/sybren/python-rsa/pull-requests/14/security-fix-bb06-attack-in-verify-by/diff","http://lists.fedoraproject.org/pipermail/package-announce/2016-January/175897.html","http://lists.fedoraproject.org/pipermail/package-announce/2016-January/175942.html","http://lists.opensuse.org/opensuse-updates/2016-01/msg00032.html","http://www.openwall.com/lists/oss-security/2016/01/05/1","http://www.openwall.com/lists/oss-security/2016/01/05/3","https://github.com/sybrenstuvel/python-rsa/commit/ab5d21c3b554f926d51ff3ad9c794bcf32e95b3c","https://web.archive.org/web/20210123020914/http://www.securityfocus.com/bid/79829","https://blog.filippo.io/bleichenbacher-06-signature-forgery-in-python-rsa","https://github.com/pypa/advisory-database/tree/main/vulns/rsa/PYSEC-2016-10.yaml","https://github.com/advisories/GHSA-8rjr-6qq5-pj9p"],"source_kind":"github","identifiers":["GHSA-8rjr-6qq5-pj9p","CVE-2016-1494"],"repository_url":"https://bitbucket.org/sybren/python-rsa","blast_radius":0.0,"packages":[{"versions":[{"first_patched_version":"3.3","vulnerable_version_range":"\u003c 3.3"}],"ecosystem":"pypi","package_name":"rsa"}],"created_at":"2023-07-28T21:03:41.899Z","updated_at":"2024-10-21T21:53:43.000Z","epss_percentage":0.0771,"epss_percentile":0.91101}],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/rsa","docker_dependents_count":8603,"docker_downloads_count":4835326951,"usage_url":"https://repos.ecosyste.ms/usage/pypi/rsa","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/rsa/dependencies","status":null,"funding_links":[],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/rsa/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/rsa/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/rsa/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/rsa/related_packages","maintainers":[{"uuid":"sybrenstuvel","login":"sybrenstuvel","name":null,"email":null,"url":null,"packages_count":7,"html_url":"https://pypi.org/user/sybrenstuvel/","role":null,"created_at":"2023-01-17T16:39:35.262Z","updated_at":"2023-01-17T16:39:35.262Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/sybrenstuvel/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":689700,"maintainers_count":292477,"namespaces_count":0,"keywords_count":228396,"github":"pypi","metadata":{"funded_packages_count":48936},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-04T05:22:32.052Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":120,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"4373940780","node_id":"PR_kwDOBxGlOM7X3z_k","number":9087,"state":"open","title":"Update rsa requirement from \u003e=4.1 to \u003e=4.9.1","user":"dependabot[bot]","labels":["t:maintenance"],"assignees":["pcrespov","sanderegg"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-04T04:03:59.000Z","updated_at":"2026-05-04T04:04:59.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"rsa","old_version":"\u003e=4.1","new_version":"\u003e=4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [rsa](https://github.com/sybrenstuvel/python-rsa) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.9 - release 2022-07-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove debug logging from \u003ccode\u003ersa/key.py\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/194\"\u003e#194\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove overlapping slots in \u003ccode\u003ePrivateKey\u003c/code\u003e and \u003ccode\u003ePublicKey\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/189\"\u003e#189\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDo not include CHANGELOG/LICENSE/README.md in wheel\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/191\"\u003e#191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed Key Generation Unittest: Public and Private keys are assigned the wrong way around\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/188\"\u003e#188\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.8 - released 2021-11-24\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://python-poetry.org/\"\u003ePoetry\u003c/a\u003e for dependency and release management.\u003c/li\u003e\n\u003cli\u003eCompatibility with Python 3.10.\u003c/li\u003e\n\u003cli\u003eChain exceptions using \u003ccode\u003eraise new_exception from old_exception\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded marker file for PEP 561. This will allow type checking tools in dependent projects\nto use type annotations from Python-RSA\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUse the Chinese Remainder Theorem when decrypting with a private key. This\nmakes decryption 2-4x faster\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/163\"\u003e#163\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7.2 - released 2021-02-24\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix picking/unpickling issue introduced in 4.7\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7.1 - released 2021-02-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix threading issue introduced in 4.7\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7 - released 2021-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e:\nCVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption\ncode\u003c/li\u003e\n\u003cli\u003eAdd padding length check as described by PKCS#1 v1.5 (Fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/ITISFoundation/osparc-simcore/pull/9087","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITISFoundation%2Fosparc-simcore/issues/9087","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9087/packages"},{"uuid":"4085808469","node_id":"PR_kwDONj7AVM7LFtUk","number":344,"state":"open","title":"chore(deps): bump rsa from 4.8 to 4.9.1 in /tests/docker","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-17T02:16:58.000Z","updated_at":"2026-03-26T09:43:46.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"rsa","old_version":"4.8","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/tests/docker","ecosystem":"pip"},"body":"Bumps [rsa](https://github.com/sybrenstuvel/python-rsa) from 4.8 to 4.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.9 - release 2022-07-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove debug logging from \u003ccode\u003ersa/key.py\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/194\"\u003e#194\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove overlapping slots in \u003ccode\u003ePrivateKey\u003c/code\u003e and \u003ccode\u003ePublicKey\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/189\"\u003e#189\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDo not include CHANGELOG/LICENSE/README.md in wheel\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/191\"\u003e#191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed Key Generation Unittest: Public and Private keys are assigned the wrong way around\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/188\"\u003e#188\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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=rsa\u0026package-manager=pip\u0026previous-version=4.8\u0026new-version=4.9.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/Netcracker/pgskipper-operator/pull/344","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netcracker%2Fpgskipper-operator/issues/344","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/344/packages"},{"uuid":"3881651866","node_id":"PR_kwDOAVOy2c7Ashnb","number":657,"state":"closed","title":"Bump the pip group across 1 directory with 38 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-01T09:23:54.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T09:27:06.000Z","updated_at":"2026-03-01T09:23:55.000Z","time_to_close":2419008,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":38,"packages":[{"name":"beautifulsoup4","old_version":"4.13.3","new_version":"4.14.3"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"bokeh","old_version":"3.6.2","new_version":"3.8.2","repository_url":"https://github.com/bokeh/bokeh"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cryptography","old_version":"44.0.1","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"markdown","old_version":"3.7","new_version":"3.10.1","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"networkx","old_version":"3.4.2","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.2.3","new_version":"2.4.2","repository_url":"https://github.com/numpy/numpy"},{"name":"pillow","old_version":"11.1.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"plotly","old_version":"5.24.1","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycurl","old_version":"7.45.4","new_version":"7.45.7","repository_url":"https://github.com/pycurl/pycurl"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyopenssl","old_version":"25.0.0","new_version":"25.3.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"scipy","old_version":"1.15.2","new_version":"1.17.0","repository_url":"https://github.com/scipy/scipy"},{"name":"setuptools","old_version":"75.8.2","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"wordcloud","old_version":"1.9.4","new_version":"1.9.6","repository_url":"https://github.com/amueller/word_cloud"},{"name":"ipython","old_version":"8.33.0","new_version":"9.9.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.5","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"pandas","old_version":"2.2.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pymongo","old_version":"4.11.1","new_version":"4.16.0","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"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":"scikit-learn","old_version":"1.6.1","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"statsmodels","old_version":"0.14.4","new_version":"0.14.6","repository_url":"https://github.com/statsmodels/statsmodels"},{"name":"tornado","old_version":"6.4.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"coverage","old_version":"7.6.12","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pytest","old_version":"8.3.4","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.0.0","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-recording","old_version":"0.13.2","new_version":"0.13.4","repository_url":"https://github.com/kiwicom/pytest-recording"},{"name":"ruff","old_version":"0.9.9","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"vcrpy","old_version":"7.0.0","new_version":"8.1.1","repository_url":"https://github.com/kevin1024/vcrpy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 38 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.3` | `4.14.3` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [bokeh](https://github.com/bokeh/bokeh) | `3.6.2` | `3.8.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.1.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.1` | `46.0.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.1` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.3` | `2.4.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.1.0` | `12.1.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `5.24.1` | `6.5.2` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycurl](https://github.com/pycurl/pycurl) | `7.45.4` | `7.45.7` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `25.0.0` | `25.3.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.17.0` |\n| [setuptools](https://github.com/pypa/setuptools) | `75.8.2` | `80.10.2` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [wordcloud](https://github.com/amueller/word_cloud) | `1.9.4` | `1.9.6` |\n| [ipython](https://github.com/ipython/ipython) | `8.33.0` | `9.9.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.5` | `8.1.8` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `3.0.0` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.11.1` | `4.16.0` |\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| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.8.0` |\n| [statsmodels](https://github.com/statsmodels/statsmodels) | `0.14.4` | `0.14.6` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.4.2` | `6.5.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.6.12` | `7.13.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.4` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.0.0` | `7.0.0` |\n| [pytest-recording](https://github.com/kiwicom/pytest-recording) | `0.13.2` | `0.13.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.9.9` | `0.14.14` |\n| [vcrpy](https://github.com/kevin1024/vcrpy) | `7.0.0` | `8.1.1` |\n\n\nUpdates `beautifulsoup4` from 4.13.3 to 4.14.3\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bokeh` from 3.6.2 to 3.8.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bokeh/bokeh/blob/3.8.2/docs/CHANGELOG\"\u003ebokeh's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2026-01-06    3.8.2:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ebugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14768\"\u003e#14768\u003c/a\u003e [component: server] Incomplete Origin Validation in WebSockets in Bokeh server applications\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etasks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14767\"\u003e#14767\u003c/a\u003e Backports for 3.8.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025-11-07    3.8.1:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ebugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14618\"\u003e#14618\u003c/a\u003e [component: docs] Local documentation build fails with \u003ccode\u003eExtension error (sphinxext.opengraph)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14626\"\u003e#14626\u003c/a\u003e [component: docs] Local documentation fails on Windows because of missing svg icons\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14651\"\u003e#14651\u003c/a\u003e [component: bokehjs] HoverTool parameter @$name for stacked bar chart not working in version 3.8.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etasks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14704\"\u003e#14704\u003c/a\u003e Backports for 3.8.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025-08-29      3.8:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ebugfixes:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/12430\"\u003e#12430\u003c/a\u003e [component: bokehjs] [BUG] Step glyphs do not support linked brushing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/12994\"\u003e#12994\u003c/a\u003e [component: bokehjs] [BUG] Patch does not output under certain conditions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/13616\"\u003e#13616\u003c/a\u003e [component: bokehjs] [BUG] DateRangePicker value does not reflect value in browser when selection is aborted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14334\"\u003e#14334\u003c/a\u003e js_on_change not firing when range is updated in range tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14352\"\u003e#14352\u003c/a\u003e [component: bokehjs] Log Axis and Range1d \u0026lt; 1 failing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14383\"\u003e#14383\u003c/a\u003e [component: bokehjs] \u003ccode\u003eSerializationError: circular reference\u003c/code\u003e When Passing List of Renderers to CustomJS Callbacks, but not when passing renderers sperately.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14396\"\u003e#14396\u003c/a\u003e [component: examples] Remove context from time of day in span example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14399\"\u003e#14399\u003c/a\u003e Bad typings for \u003ccode\u003elist_attr_splat\u003c/code\u003e (e.g. \u003ccode\u003ePlot.axis\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14413\"\u003e#14413\u003c/a\u003e [component: bokehjs] \u003ccode\u003eValueRef\u003c/code\u003e \u003ccode\u003eformatter\u003c/code\u003e does not handle datetime nullable well\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14420\"\u003e#14420\u003c/a\u003e [component: bokehjs] Enhance performance of WebGL multi_marker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14422\"\u003e#14422\u003c/a\u003e [component: bokehjs] Legend renderer not correctly positioned when saved with SaveTool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14424\"\u003e#14424\u003c/a\u003e [component: bokehjs] Patches with no data does not show plot with Bokeh 3.7+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14458\"\u003e#14458\u003c/a\u003e [component: bokehjs] Removing and re-adding DOM nodes causes React problems\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14461\"\u003e#14461\u003c/a\u003e [component: tests] The regression test for issue \u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14207\"\u003e#14207\u003c/a\u003e is unreliable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14468\"\u003e#14468\u003c/a\u003e [component: docs] Try on CodePen link does not work in documentation /docs/user_guide/advanced/bokehjs.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14469\"\u003e#14469\u003c/a\u003e [component: bokehjs] Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14476\"\u003e#14476\u003c/a\u003e Improve handling of pd.NA in Property.matches\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14497\"\u003e#14497\u003c/a\u003e mypy 1.15.0 fails in CI but not locally\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14499\"\u003e#14499\u003c/a\u003e [component: docs] IndexError on importing bokeh.sphinxext.bokeh_plot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14520\"\u003e#14520\u003c/a\u003e [component: bokehjs] BokehJS complains about categorical factors for the BoxAnnotation widget\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14536\"\u003e#14536\u003c/a\u003e Flex layouts need to apply \u003ccode\u003emin_width\u003c/code\u003e and \u003ccode\u003emin_height\u003c/code\u003e selectively\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14540\"\u003e#14540\u003c/a\u003e [component: tests] Tests are failing on Windows and Python 3.10 after PR \u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14531\"\u003e#14531\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14541\"\u003e#14541\u003c/a\u003e New SVG icons have inconsistent line widths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14554\"\u003e#14554\u003c/a\u003e Add support for scalar uint32 color input.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14565\"\u003e#14565\u003c/a\u003e [component: bokehjs] DataTable source update broken\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14574\"\u003e#14574\u003c/a\u003e [component: build] grammar build script failing with whitespace in path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14597\"\u003e#14597\u003c/a\u003e [component: bokehjs] \u003ccode\u003edocument_ready\u003c/code\u003e even trigger twice with Bokeh 3.4.0.dev4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14602\"\u003e#14602\u003c/a\u003e [component: bokehjs] Layoutable components in side panels don't appear in exported images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14620\"\u003e#14620\u003c/a\u003e Re-connect race condition on page reload\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/bokeh/bokeh/commit/e5ce879c388a990e2977d126be14db5f642cf540\"\u003e\u003ccode\u003ee5ce879\u003c/code\u003e\u003c/a\u003e Deployment updates for release 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/2b3ee1081a7622d49daefea3214f1c6b07ad602c\"\u003e\u003ccode\u003e2b3ee10\u003c/code\u003e\u003c/a\u003e Don't validate npm credentials due to OICD limitations in npm (\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14769\"\u003e#14769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/756e3aef85e95330c49f997d6936bf0bd522393e\"\u003e\u003ccode\u003e756e3ae\u003c/code\u003e\u003c/a\u003e Migrate from NPM tokens to trusted providers for publishing in CI (\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14766\"\u003e#14766\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/2f225a1dbbc8ae74425b4e5acedf56aedc3f9d1d\"\u003e\u003ccode\u003e2f225a1\u003c/code\u003e\u003c/a\u003e Update dependencies in build environment (\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14758\"\u003e#14758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/69d197c318da7dd1a67d7f2a101f21fcdd0065f0\"\u003e\u003ccode\u003e69d197c\u003c/code\u003e\u003c/a\u003e update switcher.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/d915c8b9f42c67a90ac52f4a8d21be5e14e1e0af\"\u003e\u003ccode\u003ed915c8b\u003c/code\u003e\u003c/a\u003e update to latest ruff (\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14661\"\u003e#14661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/5f9f7b66bdd09cfac086da212d134a7654dfdab2\"\u003e\u003ccode\u003e5f9f7b6\u003c/code\u003e\u003c/a\u003e update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/cedd113b0e271b439dce768671685cf5f861812e\"\u003e\u003ccode\u003ecedd113\u003c/code\u003e\u003c/a\u003e handle wildcard host with port correctly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/a961ab7aad2a7d5d0350e861368e3d4294732caa\"\u003e\u003ccode\u003ea961ab7\u003c/code\u003e\u003c/a\u003e small CI fixes for advisory fork merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/d62939a6f9515d86010cf564ef6e256b62636725\"\u003e\u003ccode\u003ed62939a\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/bokeh/bokeh/compare/3.6.2...3.8.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 44.0.1 to 46.0.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.1...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.26.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/releases\"\u003ejsonschema's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.26.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1400\"\u003epython-jsonschema/jsonschema#1400\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1405\"\u003epython-jsonschema/jsonschema#1405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 6.5.0 to 6.6.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1406\"\u003epython-jsonschema/jsonschema#1406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1407\"\u003epython-jsonschema/jsonschema#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1413\"\u003epython-jsonschema/jsonschema#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 6.6.0 to 6.6.1 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/python-jsonschema/jsonschema/pull/1412\"\u003epython-jsonschema/jsonschema#1412\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1410\"\u003epython-jsonschema/jsonschema#1410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.3.2 to 2.3.3 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/python-jsonschema/jsonschema/pull/1409\"\u003epython-jsonschema/jsonschema#1409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1411\"\u003epython-jsonschema/jsonschema#1411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003evalidators: avoid \u003ccode\u003eurllib.request\u003c/code\u003e at import-time by \u003ca href=\"https://github.com/gudnimg\"\u003e\u003ccode\u003e@​gudnimg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1416\"\u003epython-jsonschema/jsonschema#1416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 6.6.1 to 6.8.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1417\"\u003epython-jsonschema/jsonschema#1417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.3.3 to 2.3.4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1418\"\u003epython-jsonschema/jsonschema#1418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1415\"\u003epython-jsonschema/jsonschema#1415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.3.4 to 2.4.1 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/python-jsonschema/jsonschema/pull/1419\"\u003epython-jsonschema/jsonschema#1419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump github/codeql-action from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1420\"\u003epython-jsonschema/jsonschema#1420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 6.8.0 to 7.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1421\"\u003epython-jsonschema/jsonschema#1421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1424\"\u003epython-jsonschema/jsonschema#1424\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.0 to 7.1.1 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/python-jsonschema/jsonschema/pull/1423\"\u003epython-jsonschema/jsonschema#1423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1425\"\u003epython-jsonschema/jsonschema#1425\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1429\"\u003epython-jsonschema/jsonschema#1429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1431\"\u003epython-jsonschema/jsonschema#1431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.4.1 to 2.4.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1432\"\u003epython-jsonschema/jsonschema#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.1 to 7.1.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1430\"\u003epython-jsonschema/jsonschema#1430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1434\"\u003epython-jsonschema/jsonschema#1434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.2 to 7.1.4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1435\"\u003epython-jsonschema/jsonschema#1435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1436\"\u003epython-jsonschema/jsonschema#1436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1437\"\u003epython-jsonschema/jsonschema#1437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.4.2 to 2.5.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1438\"\u003epython-jsonschema/jsonschema#1438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1439\"\u003epython-jsonschema/jsonschema#1439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument \u003ccode\u003euuid\u003c/code\u003e format by \u003ca href=\"https://github.com/sim642\"\u003e\u003ccode\u003e@​sim642\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1440\"\u003epython-jsonschema/jsonschema#1440\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1441\"\u003epython-jsonschema/jsonschema#1441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.4 to 7.1.6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1442\"\u003epython-jsonschema/jsonschema#1442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1443\"\u003epython-jsonschema/jsonschema#1443\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/gudnimg\"\u003e\u003ccode\u003e@​gudnimg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1416\"\u003epython-jsonschema/jsonschema#1416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sim642\"\u003e\u003ccode\u003e@​sim642\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1440\"\u003epython-jsonschema/jsonschema#1440\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.1...v4.26.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.1...v4.26.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1396\"\u003epython-jsonschema/jsonschema#1396\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev4.26.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease import time by delaying importing of \u003ccode\u003eurllib.request\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1416\"\u003e#1416\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.25.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix an incorrect required argument in the \u003ccode\u003eValidator\u003c/code\u003e protocol's type annotations (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.25.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra via the MIT-licensed \u003ccode\u003erfc3987-syntax\u003c/code\u003e.\nThey were alread supported by the \u003ccode\u003eformat\u003c/code\u003e extra. (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1388\"\u003e#1388\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.24.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eProperly escape segments in \u003ccode\u003eValidationError.json_path\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/139\"\u003e#139\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.24.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix improper handling of \u003ccode\u003eunevaluatedProperties\u003c/code\u003e in the presence of \u003ccode\u003eadditionalProperties\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1351\"\u003e#1351\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.8 has been dropped, as it is end-of-life.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a7277432b0f7bcd0551f6e589d30457017125df4\"\u003e\u003ccode\u003ea727743\u003c/code\u003e\u003c/a\u003e Add a changelog entry for 4.26.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6d28c13efbbd6cf136143fdbb18f79d4476091f6\"\u003e\u003ccode\u003e6d28c13\u003c/code\u003e\u003c/a\u003e Update the lockfile.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/739499edc33c007ff62180c9fef61dbf5480bb7b\"\u003e\u003ccode\u003e739499e\u003c/code\u003e\u003c/a\u003e Update pre-commit hooks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/cb2d77980713577f65cc7e7c7c115932206393fd\"\u003e\u003ccode\u003ecb2d779\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1443\"\u003e#1443\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/e6bbbb7c5bcdb32a654572d17bfce264aefd1f9d\"\u003e\u003ccode\u003ee6bbbb7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/d56037a88faac4881214c6674a785b4abd428617\"\u003e\u003ccode\u003ed56037a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1442\"\u003e#1442\u003c/a\u003e from python-jsonschema/dependabot/github_actions/ast...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/e54ce13fb590a5c17fb702431598a382de6e68f9\"\u003e\u003ccode\u003ee54ce13\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 7.1.4 to 7.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1f7c9fbd01d9c2f8ddd98065324062f7e122dbe1\"\u003e\u003ccode\u003e1f7c9fb\u003c/code\u003e\u003c/a\u003e Partially update docs requirements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/241aec982bc8c867f276779faf20d49d9774532f\"\u003e\u003ccode\u003e241aec9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1441\"\u003e#1441\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/2818efb4fa446ed4fa7815b4e09a7b4b7c633852\"\u003e\u003ccode\u003e2818efb\u003c/code\u003e\u003c/a\u003e Apache-2.0 -\u0026gt; nongpl\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.26.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.7 to 3.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.9.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.8.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed comment parsing in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed declarations in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed HTML tag \u003ccode\u003e\u0026lt;foo\u003c/code\u003e and Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.8.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure incomplete markup declaration in raw HTML doesn't crash parser (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1534\"\u003e#1534\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed dropped content in \u003ccode\u003emd_in_html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1526\"\u003e#1526\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed HTML handling corner case that prevented some content from not being rendered (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1528\"\u003e#1528\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.8.2] - 2025-06-19\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed comment parsing in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed declarations in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed HTML tag \u003ccode\u003e\u0026lt;foo\u003c/code\u003e and Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.8.1] - 2025-06-18\u003c/h2\u003e\n\u003ch3\u003eFixed\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/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/961856ceb30623b929d8b7abdf5ed7074db7184c\"\u003e\u003ccode\u003e961856c\u003c/code\u003e\u003c/a\u003e Update link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/2b49115b1002142afbd84b3002f13c0e98a0f487\"\u003e\u003ccode\u003e2b49115\u003c/code\u003e\u003c/a\u003e Ensure nested elements inside inline comments are properly unescaped.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/22e89c1fc346f72218a10e392a0c3b4731912522\"\u003e\u003ccode\u003e22e89c1\u003c/code\u003e\u003c/a\u003e Bump version to 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c138aea5139a6aceae05bb957e866d9ce7577b94\"\u003e\u003ccode\u003ec138aea\u003c/code\u003e\u003c/a\u003e + PY314 - PY39\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.7...3.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markupsafe` from 3.0.2 to 3.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/releases\"\u003emarkupsafe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.3\u003c/h2\u003e\n\u003cp\u003eThis is the MarkupSafe 3.0.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/MarkupSafe/3.0.3/\"\u003ehttps://pypi.org/project/MarkupSafe/3.0.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\"\u003ehttps://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/markupsafe/milestone/15?closed=1\"\u003ehttps://github.com/pallets/markupsafe/milestone/15?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/487\"\u003e#487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialization PEP 489 for the C extension. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/494\"\u003e#494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/485\"\u003e#485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/503\"\u003e#503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/505\"\u003e#505\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/blob/main/CHANGES.rst\"\u003emarkupsafe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.3\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-27\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e.\n:issue:\u003ccode\u003e487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialisation (:pep:\u003ccode\u003e489\u003c/code\u003e) for the C extension.\n:issue:\u003ccode\u003e494\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. :issue:\u003ccode\u003e485\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. :issue:\u003ccode\u003e503\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. :issue:\u003ccode\u003e505\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/297fc8e356e6836a62087949245d09a28e9f1b13\"\u003e\u003ccode\u003e297fc8e\u003c/code\u003e\u003c/a\u003e release version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/7e4e6ce249107c5f27fa6fe890e29da7a8dc8f0c\"\u003e\u003ccode\u003e7e4e6ce\u003c/code\u003e\u003c/a\u003e Free-threading: run with pytest-run-paralell (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/507\"\u003e#507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/6100b9c0d466495a08d55b33cb172d7b5d8e9aa1\"\u003e\u003ccode\u003e6100b9c\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/506\"\u003e#506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/c9d5ecfc7eec6f611b19cdc8e1cde1aaa65cb8eb\"\u003e\u003ccode\u003ec9d5ecf\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/2f9b33753052e7c6df1464a7c900787d04ae9daf\"\u003e\u003ccode\u003e2f9b337\u003c/code\u003e\u003c/a\u003e tox for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/78d951a9549dee9fc901c55fc79a74a5f01e96fc\"\u003e\u003ccode\u003e78d951a\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/bb6744e392e79611b110c5ba022238eb1b855cc2\"\u003e\u003ccode\u003ebb6744e\u003c/code\u003e\u003c/a\u003e add entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/65c4134ab16a3faccbcac2cba90da0db2b799542\"\u003e\u003ccode\u003e65c4134\u003c/code\u003e\u003c/a\u003e upgrade cibuildwheel, add \u003ccode\u003ecp314\u003c/code\u003e wheels and test on CPython 3.14 (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/504\"\u003e#504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/3a9bd88b84c9edba8b922bb12b84a59feed98788\"\u003e\u003ccode\u003e3a9bd88\u003c/code\u003e\u003c/a\u003e add cp314 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/aafe44d87bd7974bc82af8c4010dea9938441edf\"\u003e\u003ccode\u003eaafe44d\u003c/code\u003e\u003c/a\u003e remove slsa provenance (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/markupsafe/compare/3.0.2...3.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `networkx` from 3.4.2 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/networkx/networkx/releases\"\u003enetworkx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNetworkX 3.6.1\u003c/h2\u003e\n\u003ch1\u003enetworkx 3.6.1\u003c/h1\u003e\n\u003cp\u003eWe're happy to announce the release of networkx 3.6.1!\u003c/p\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd spectral bipartition community finding and greedy bipartition using node swaps (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8347\"\u003e#8347\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNodelists for \u003ccode\u003efrom_biadjacency_matrix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/7993\"\u003e#7993\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd spectral bipartition community finding and greedy bipartition using node swaps (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8347\"\u003e#8347\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix draw_networkx_nodes with list node_shape and add regression test (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8363\"\u003e#8363\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: allow graph subclasses to have additional arguments (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8369\"\u003e#8369\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDOC: Improve benchmarking readme (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8358\"\u003e#8358\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: More details re: RC releases in the release process devdocs (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8346\"\u003e#8346\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: clarify difference between G.nodes/G.nodes() and G.edges/G.edges() in tutorial (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8300\"\u003e#8300\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: Add blurb to contributor guide about drawing tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8370\"\u003e#8370\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: Fix underline lens in docstrings (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8371\"\u003e#8371\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRolling back shortest paths links (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8373\"\u003e#8373\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: Replace string literal with comment (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8359\"\u003e#8359\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the actions group (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8360\"\u003e#8360\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003epin python 3.14 to be version 3.14.0 until dataclasses are fixed (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8365\"\u003e#8365\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBlocklist Python 3.14.1 (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8372\"\u003e#8372\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTST: add tests for unsupported graph types in MST algorithms (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8353\"\u003e#8353\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTST: clean up isomorphism tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8364\"\u003e#8364\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003e10 authors added to this release (alphabetically):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Aka2210\"\u003e\u003ccode\u003e@​Aka2210\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jfinkels\"\u003e\u003ccode\u003e@​jfinkels\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NaorTIRAM\"\u003e\u003ccode\u003e@​NaorTIRAM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAditi Juneja (\u003ca href=\"https://github.com/Schefflera-Arboricola\"\u003e\u003ccode\u003e@​Schefflera-Arboricola\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlejandro Candioti (\u003ca href=\"https://github.com/amcandio\"\u003e\u003ccode\u003e@​amcandio\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColman Bouton (\u003ca href=\"https://github.com/LorentzFactor\"\u003e\u003ccode\u003e@​LorentzFactor\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/networkx/networkx/commit/7530809bfa1ea7ed6fdf918a4d1431488953cb1f\"\u003e\u003ccode\u003e7530809\u003c/code\u003e\u003c/a\u003e Designate 3.6.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/4788eb08f2492dd6bf6f97ce8ee07cd52aa6cf89\"\u003e\u003ccode\u003e4788eb0\u003c/code\u003e\u003c/a\u003e Rolling back shortest paths links (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8373\"\u003e#8373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/696edb6efbbbb622959e96f1276fc0db68dc0954\"\u003e\u003ccode\u003e696edb6\u003c/code\u003e\u003c/a\u003e Fix draw_networkx_nodes with list node_shape and add regression test  (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8363\"\u003e#8363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/c38830c61a6fee3ee10f216071bb63cb9b92bfb9\"\u003e\u003ccode\u003ec38830c\u003c/code\u003e\u003c/a\u003e Blocklist Python 3.14.1 (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8372\"\u003e#8372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/81d231141b08600ebfd1c781e28ecbf791e94016\"\u003e\u003ccode\u003e81d2311\u003c/code\u003e\u003c/a\u003e DOC: Fix underline lens in docstrings. (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8371\"\u003e#8371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/a6e2bfadef51dda47df6466b32642e0d428c5801\"\u003e\u003ccode\u003ea6e2bfa\u003c/code\u003e\u003c/a\u003e DOC: Add blurb to contributor guide about drawing tests. (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8370\"\u003e#8370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/96b628295eff29d266e1c75355556fc9fe58cc16\"\u003e\u003ccode\u003e96b6282\u003c/code\u003e\u003c/a\u003e DOC: clarify difference between G.nodes/G.nodes() and G.edges/G.edges() in tu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/75bdd737ca8382d06eb76ff9018a81870c9f3443\"\u003e\u003ccode\u003e75bdd73\u003c/code\u003e\u003c/a\u003e Fix: allow graph subclasses to have additional arguments (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8369\"\u003e#8369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/7663fa5e5fd73d6921410a18c7ac4116ffa04f4d\"\u003e\u003ccode\u003e7663fa5\u003c/code\u003e\u003c/a\u003e TST: clean up isomorphism tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8364\"\u003e#8364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/3dacd1bdcbd976b9e148a60ddebafd868c0a52f3\"\u003e\u003ccode\u003e3dacd1b\u003c/code\u003e\u003c/a\u003e Add spectral bipartition community finding and greedy bipartition using node ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/networkx/networkx/compare/networkx-3.4.2...networkx-3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.3 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak in flat assignment iterator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30516\"\u003e#30516\u003c/a\u003e: BUG: fix heap overflow in fixed-width string multiply (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30511\"\u003e#30511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30523\"\u003e#30523\u003c/a\u003e: BUG: Ensure summed weights returned by np.average always are...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30527\"\u003e#30527\u003c/a\u003e: TYP: Fix return type of histogram2d\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30594\"\u003e#30594\u003c/a\u003e: MAINT: avoid passing ints to random functions that take double...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30595\"\u003e#30595\u003c/a\u003e: BLD: Avoiding conflict with pygit2 for static build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30596\"\u003e#30596\u003c/a\u003e: MAINT: Fix msvccompiler missing error on FreeBSD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30608\"\u003e#30608\u003c/a\u003e: BLD: update vendored Meson to 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30620\"\u003e#30620\u003c/a\u003e: ENH: use more fine-grained critical sections in array coercion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30623\"\u003e#30623\u003c/a\u003e: BUG: Undo result type change of quantile/percentile but keep...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0 (Dec 20, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.0 release continues the work to improve free threaded Python\nsupport, user dtypes implementation, and annotations. There are many expired\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/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst\"\u003enumpy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis is a walkthrough of the NumPy 2.4.0 release on Linux, which will be the\nfirst feature release using the \u003ccode\u003enumpy/numpy-release \u0026lt;https://github.com/numpy/numpy-release\u0026gt;\u003c/code\u003e__ repository.\u003c/p\u003e\n\u003cp\u003eThe commands can be copied into the command line, but be sure to replace 2.4.0\nwith the correct version. This should be read together with the\n:ref:\u003ccode\u003egeneral release guide \u0026lt;prepare_release\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eFacility preparation\u003c/h1\u003e\n\u003cp\u003eBefore beginning to make a release, use the \u003ccode\u003erequirements/*_requirements.txt\u003c/code\u003e files to\nensure that you have the needed software. Most software can be installed with\npip, but some will require apt-get, dnf, or whatever your system uses for\nsoftware. You will also need a GitHub personal access token (PAT) to push the\ndocumentation. There are a few ways to streamline things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGit can be set up to use a keyring to store your GitHub personal access token.\nSearch online for the details.\u003c/li\u003e\n\u003cli\u003eYou can use the \u003ccode\u003ekeyring\u003c/code\u003e app to store the PyPI password for twine. See the\nonline twine documentation for details.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePrior to release\u003c/h1\u003e\n\u003ch2\u003eAdd/drop Python versions\u003c/h2\u003e\n\u003cp\u003eWhen adding or dropping Python versions, multiple config and CI files need to\nbe edited in addition to changing the minimum version in \u003ccode\u003epyproject.toml\u003c/code\u003e.\nMake these changes in an ordinary PR against main and backport if necessary.\nWe currently release wheels for new Python versions after the first Python RC\nonce manylinux and cibuildwheel support that new Python version.\u003c/p\u003e\n\u003ch2\u003eBackport pull requests\u003c/h2\u003e\n\u003cp\u003eChanges that have been marked for this release must be backported to the\nmaintenance/2.4.x branch.\u003c/p\u003e\n\u003ch2\u003eUpdate 2.4.0 milestones\u003c/h2\u003e\n\u003cp\u003eLook at the issues/prs with 2.4.0 milestones and either push them off to a\nlater version, or maybe remove the milestone. You may need to add a milestone.\u003c/p\u003e\n\u003cp\u003eCheck the numpy-release repo\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/numpy/numpy/commit/c81c49f77451340651a751e76bca607d85e4fd55\"\u003e\u003ccode\u003ec81c49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30757\"\u003e#30757\u003c/a\u003e from charris/prepare-2.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b3ae9c59de627110458653836f1be81280222f85\"\u003e\u003ccode\u003eb3ae9c5\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9de89843c3918fa133f1aab9fb4435c38a3b0ba6\"\u003e\u003ccode\u003e9de8984\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30737\"\u003e#30737\u003c/a\u003e from mattip/scipy-openblas-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b7be329895e32de44578742b2745fb307cdf8625\"\u003e\u003ccode\u003eb7be329\u003c/code\u003e\u003c/a\u003e backport scipy-openblas version change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7ff98637f80dc1ff7a18fce8025ffabdded76094\"\u003e\u003ccode\u003e7ff9863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30736\"\u003e#30736\u003c/a\u003e from charris/backport-30667\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/431fffbe91d86c04738f039e0048441f8f9b5fff\"\u003e\u003ccode\u003e431fffb\u003c/code\u003e\u003c/a\u003e MAINT: Skip tests that require \u003cstrong\u003ebuffer\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/127235fcd9b2e80764da8f6c64f942a6bddb093a\"\u003e\u003ccode\u003e127235f\u003c/code\u003e\u003c/a\u003e BUG: fix thread safety of \u003ccode\u003earray_getbuffer\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30667\"\u003e#30667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/18bdb2e675b68daa5afc3250c41982ff77b3867f\"\u003e\u003ccode\u003e18bdb2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30713\"\u003e#30713\u003c/a\u003e from charris/backport-30710\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/41dd7512de6dc3dd665b71d4e3a321aa1150dc48\"\u003e\u003ccode\u003e41dd751\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30712\"\u003e#30712\u003c/a\u003e from charris/backport-30705\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7a278da99943376313b8f631905c3baaa7a82a30\"\u003e\u003ccode\u003e7a278da\u003c/code\u003e\u003c/a\u003e BUG: Fixup the quantile promotion fixup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.2.3...v2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 11.1.0 to 12.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.1.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDeprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate getdata(), in favour of new get_flattened_data() \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9292\"...\n\n_Description has been truncated_","html_url":"https://github.com/briehl/narrative/pull/657","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/briehl%2Fnarrative/issues/657","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/657/packages"},{"uuid":"3854485334","node_id":"PR_kwDOMftbFc6_Sm3X","number":190,"state":"closed","title":"Bump the py-updates group across 1 directory with 83 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-02T04:30:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T04:37:31.000Z","updated_at":"2026-02-02T04:30:53.000Z","time_to_close":604401,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":83,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.24","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.20","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.31.1","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"myst-parser","old_version":"4.0.1","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.2","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 83 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.24` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.34` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.34` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `3.0.0` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `23.0.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.34` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.34` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.20` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.14` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.31.1` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `4.0.1` | `5.0.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.2` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.52.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.24\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3af1873c23374171e0bc9a6891a361221178fd8d\"\u003e\u003ccode\u003e3af1873\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3db4f00603a7e7a76ffc0838593db9656e72799e\"\u003e\u003ccode\u003e3db4f00\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/2c19a9fcf0f35398a280868073b4170c02f4ef5a\"\u003e\u003ccode\u003e2c19a9f\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/80d79654015909384fe93f268867f5dec1e58705\"\u003e\u003ccode\u003e80d7965\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/75d1e11e5a5e06d8dcc5637ea26091874275eb99\"\u003e\u003ccode\u003e75d1e11\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/a220ab958493ad5a52289d964546d66538ee7711\"\u003e\u003ccode\u003ea220ab9\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c48c8ab1a19bdf5f8b3510e9948016443eb7d2e0\"\u003e\u003ccode\u003ec48c8ab\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/39e70dfeaa3a5dad7c8c49d08c64b79bc299c58c\"\u003e\u003ccode\u003e39e70df\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/094e6fa721d66f284e1466e758e32120b8594ab7\"\u003e\u003ccode\u003e094e6fa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/4cd22ade79f67568ad66b6d406882dcd02a6fa6c\"\u003e\u003ccode\u003e4cd22ad\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;UNION\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26039\"\u003e#26039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePropagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly pin chrono (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26051\"\u003e#26051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't run rust doctests (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26046\"\u003e#26046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26042\"\u003e#26042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIgnore very slow test (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26041\"\u003e#26041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/Voultapher\"\u003e\u003ccode\u003e@​Voultapher\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/wtn\"\u003e\u003ccode\u003e@​wtn\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/bb79993c3aa91d0db7d20be8f75c8075cad97067\"\u003e\u003ccode\u003ebb79993\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26078\"\u003e#26078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/26a9d097af5ea7d35f72bb8514ab990ddbce4796\"\u003e\u003ccode\u003e26a9d09\u003c/code\u003e\u003c/a\u003e chore: Mark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/451f247ba33506c9822478d0409a5075fec5797c\"\u003e\u003ccode\u003e451f247\u003c/code\u003e\u003c/a\u003e refactor(rust): Simplify \u003ccode\u003ePlPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26053\"\u003e#26053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b532aad910b0fe065b9fbe648944f3a580d3d104\"\u003e\u003ccode\u003eb532aad\u003c/code\u003e\u003c/a\u003e docs: Clarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/707796731ab7cf51f296a9b56a0231a5537e4259\"\u003e\u003ccode\u003e7077967\u003c/code\u003e\u003c/a\u003e fix: Optimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/44c139746390a0b81b3e908a8a6529cc6efdea1e\"\u003e\u003ccode\u003e44c1397\u003c/code\u003e\u003c/a\u003e fix: CPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/35ec39865a1952f60f46d17e461974881844b9c1\"\u003e\u003ccode\u003e35ec398\u003c/code\u003e\u003c/a\u003e chore: Update breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/84fa66381626dbd826e2d5a663285fb193356d64\"\u003e\u003ccode\u003e84fa663\u003c/code\u003e\u003c/a\u003e fix(python): Propagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e9e20e468cb84f966eed1e37a7b23afaf842e88f\"\u003e\u003ccode\u003ee9e20e4\u003c/code\u003e\u003c/a\u003e fix: Fix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b0fdbd34d430d934bda9a4ca3f75e136223bd95b\"\u003e\u003ccode\u003eb0fdbd3\u003c/code\u003e\u003c/a\u003e chore: Fix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9a285e6beab78c1f4c97047674ec09ac5451c4d1\"\u003e\u003ccode\u003e9a285e6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/29574158e22c3b2d6ca044eef1dc054d28d73485\"\u003e\u003ccode\u003e2957415\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8e1fd2e6e5c1fd6236cacf2dc9064d55d8baf07b\"\u003e\u003ccode\u003e8e1fd2e\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9cadce52dae6e58e450a9ac0745a721dda8a4044\"\u003e\u003ccode\u003e9cadce5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ee24f15c3013be4f4c6e76bfbc948b910e6f8f35\"\u003e\u003ccode\u003eee24f15\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b0f2cf318d9bef8eaf3f11cd81b22ce67810ea82\"\u003e\u003ccode\u003eb0f2cf3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6e690ed2966406d4b53532a44e70c93370368ae6\"\u003e\u003ccode\u003e6e690ed\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b84ec5ebd8880b77e998bfdd28984f214c3f1fa3\"\u003e\u003ccode\u003eb84ec5e\u003c/code\u003e\u003c/a\u003e Add BOTOCORE_TCP_KEEPALIVE environment variable documentation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4705\"\u003e#4705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/36cebd34052db2fc7449b85ac04f903fb40f8b2f\"\u003e\u003ccode\u003e36cebd3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d4d10440677e98c5c15fb6c84cc605bd7401fd74\"\u003e\u003ccode\u003ed4d1044\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/d52e6ce4372810dc3a0d6701b366f54add0aedae\"\u003e\u003ccode\u003ed52e6ce\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fce5268f1cd4063f30e3faec44da7efa309cae5f\"\u003e\u003ccode\u003efce5268\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/45e43f9baa8c57d13eb75d7566f1401366a1a188\"\u003e\u003ccode\u003e45e43f9\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b9ed58fa2f31170724538f6ed86e8cbf833de8fd\"\u003e\u003ccode\u003eb9ed58f\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/48062d233b8173af5af60afb85443e04c6520146\"\u003e\u003ccode\u003e48062d2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8eb5ab6cd38ba8d94d938fac2e6086bd918760dc\"\u003e\u003ccode\u003e8eb5ab6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05b651e910c4b59a971a2566afb4b82a51fb00fc\"\u003e\u003ccode\u003e05b651e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/aba67690e5aa14f58083dfa168d7fc09681c884a\"\u003e\u003ccode\u003eaba6769\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/3549e0136b656df25e985bdb85233f95da5851d3\"\u003e\u003ccode\u003e3549e01\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0847d5e023fd0f7d0e19a154ee22a46e8f56bc38\"\u003e\u003ccode\u003e0847d5e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.4.26 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `jmespath` from 1.0.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jmespath/jmespath.py/blob/develop/CHANGELOG.rst\"\u003ejmespath's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix concurrency issue with cache\n(\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12-3.14 (\u003ccode\u003epr [#331](https://github.com/jmespath/jmespath.py/issues/331) \u0026lt;https://github.com/jmespath/jmespath.py/pull/331\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for Python 3.7-3.8 (\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/6ff419a8b171d055a9bfc6904605bceb8b7a80ef\"\u003e\u003ccode\u003e6ff419a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.1.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/17e964f81911b49babb33e8697b34a31f869420f\"\u003e\u003ccode\u003e17e964f\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/5ce13aab582ba08b07e1c615feeb3654a7cd8d62\"\u003e\u003ccode\u003e5ce13aa\u003c/code\u003e\u003c/a\u003e Merge branch 'v1.1.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/d8f0457f8f962724b2c1ae12f79d3ba65edf4d82\"\u003e\u003ccode\u003ed8f0457\u003c/code\u003e\u003c/a\u003e Revert versions back to current version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/8cb30825f62675f6018b812faa9e2c9566eba2e3\"\u003e\u003ccode\u003e8cb3082\u003c/code\u003e\u003c/a\u003e 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/6e379910c1bc0ec0339b05da73e32cad9d3dddbc\"\u003e\u003ccode\u003e6e37991\u003c/code\u003e\u003c/a\u003e Update permissions in codeql.yml workflow (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/141734d98ac79c165ec31aa1c18dd29efc45ac49\"\u003e\u003ccode\u003e141734d\u003c/code\u003e\u003c/a\u003e Bring .github settings up-to-date (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/07e30cf011056386c3dade2502a53eb2b1d4b3c1\"\u003e\u003ccode\u003e07e30cf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/337\"\u003e#337\u003c/a\u003e from nateprewitt/python_changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/9170711017c2be9e3057a384e4a6061ef71bdc6f\"\u003e\u003ccode\u003e9170711\u003c/code\u003e\u003c/a\u003e Add missing changelog entries for Python support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/cdb9327fd597dda1aff703e6e5b98d79503c6f4e\"\u003e\u003ccode\u003ecdb9327\u003c/code\u003e\u003c/a\u003e Fix file encoding for Windows\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jmespath/jmespath.py/compare/1.0.1...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak i...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/190/packages"},{"uuid":"3843678665","node_id":"PR_kwDOQ7fPpM6-vF6G","number":3,"state":"open","title":"Update rsa requirement from \u003c4.8,\u003e=3.1.2 to \u003e=3.1.2,\u003c4.10","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-01-22T16:21:05.000Z","updated_at":"2026-01-22T16:21:06.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"rsa","old_version":"\u003c4.8,\u003e=3.1.2","new_version":"\u003e=3.1.2,\u003c4.10","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [rsa](https://github.com/sybrenstuvel/python-rsa) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.9 - release 2022-07-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove debug logging from \u003ccode\u003ersa/key.py\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/194\"\u003e#194\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove overlapping slots in \u003ccode\u003ePrivateKey\u003c/code\u003e and \u003ccode\u003ePublicKey\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/189\"\u003e#189\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDo not include CHANGELOG/LICENSE/README.md in wheel\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/191\"\u003e#191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed Key Generation Unittest: Public and Private keys are assigned the wrong way around\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/188\"\u003e#188\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.8 - released 2021-11-24\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://python-poetry.org/\"\u003ePoetry\u003c/a\u003e for dependency and release management.\u003c/li\u003e\n\u003cli\u003eCompatibility with Python 3.10.\u003c/li\u003e\n\u003cli\u003eChain exceptions using \u003ccode\u003eraise new_exception from old_exception\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded marker file for PEP 561. This will allow type checking tools in dependent projects\nto use type annotations from Python-RSA\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUse the Chinese Remainder Theorem when decrypting with a private key. This\nmakes decryption 2-4x faster\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/163\"\u003e#163\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7.2 - released 2021-02-24\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix picking/unpickling issue introduced in 4.7\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7.1 - released 2021-02-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix threading issue introduced in 4.7\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7 - released 2021-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e:\nCVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption\ncode\u003c/li\u003e\n\u003cli\u003eAdd padding length check as described by PKCS#1 v1.5 (Fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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 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/tysonjoe333/aws-cli/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tysonjoe333%2Faws-cli/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"},{"uuid":"3831550388","node_id":"PR_kwDOP4p1Is6-Gm8K","number":230,"state":"open","title":"chore(deps): bump rsa from 4.9 to 4.9.1 in /category_service","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-20T00:11:38.000Z","updated_at":"2026-02-04T01:03:16.936Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/category_service","ecosystem":"pip"},"body":"Bumps [rsa](https://github.com/sybrenstuvel/python-rsa) from 4.9 to 4.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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=rsa\u0026package-manager=pip\u0026previous-version=4.9\u0026new-version=4.9.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/Klukvas/FinFlow/pull/230","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Klukvas%2FFinFlow/issues/230","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/230/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":"3809018744","node_id":"PR_kwDOQ5Cc0s688IIQ","number":114,"state":"open","title":"chore(deps): bump rsa from 3.1.4 to 4.7 in /y/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-13T14:08:05.000Z","updated_at":"2026-01-13T14:08:53.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"rsa","old_version":"3.1.4","new_version":"4.7","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/y/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","ecosystem":"pip"},"body":"Bumps the pip group with 1 update in the /y/google-cloud-sdk/platform/gsutil/gslib/vendored/boto directory: [rsa](https://github.com/sybrenstuvel/python-rsa).\n\nUpdates `rsa` from 3.1.4 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.7 - released 2021-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e:\nCVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption\ncode\u003c/li\u003e\n\u003cli\u003eAdd padding length check as described by PKCS#1 v1.5 (Fixes\n\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReuse of blinding factors to speed up blinding operations.\nFixes \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/162\"\u003e#162\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDeclare \u0026amp; test support for Python 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.4 \u0026amp; 4.6 - released 2020-06-12\u003c/h2\u003e\n\u003cp\u003eVersion 4.4 and 4.6 are almost a re-tagged release of version 4.2. It requires\nPython 3.5+. To avoid older Python installations from trying to upgrade to RSA\n4.4, this is now made explicit in the \u003ccode\u003epython_requires\u003c/code\u003e argument in \u003ccode\u003esetup.py\u003c/code\u003e.\nThere was a mistake releasing 4.4 as \u0026quot;3.5+ only\u0026quot;, which made it necessary to\nretag 4.4 as 4.6 as well.\u003c/p\u003e\n\u003cp\u003eNo functional changes compared to version 4.2.\u003c/p\u003e\n\u003ch2\u003eVersion 4.3 \u0026amp; 4.5 - released 2020-06-12\u003c/h2\u003e\n\u003cp\u003eVersion 4.3 and 4.5 are almost a re-tagged release of version 4.0. It is the\nlast to support Python 2.7. This is now made explicit in the \u003ccode\u003epython_requires\u003c/code\u003e\nargument in \u003ccode\u003esetup.py\u003c/code\u003e. Python 3.4 is not supported by this release. There was a\nmistake releasing 4.4 as \u0026quot;3.5+ only\u0026quot;, which made it necessary to retag 4.3 as\n4.5 as well.\u003c/p\u003e\n\u003cp\u003eTwo security fixes have also been backported, so 4.3 = 4.0 + these two fixes.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChoose blinding factor relatively prime to N. Thanks Christian Heimes for pointing this out.\u003c/li\u003e\n\u003cli\u003eReject cyphertexts (when decrypting) and signatures (when verifying) that have\nbeen modified by prepending zero bytes. This resolves CVE-2020-13757. Thanks\nCarnil for pointing this out.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.2 - released 2020-06-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRolled back the switch to Poetry, and reverted back to using Pipenv + setup.py\nfor dependency management. There apparently is an issue no-binary installs of\npackages build with Poetry. This fixes\n\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/148\"\u003e#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimited SHA3 support to those Python versions (3.6+) that support it natively.\nThe third-party library that adds support for this to Python 3.5 is a binary\npackage, and thus breaks the pure-Python nature of Python-RSA.\nThis should fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/147\"\u003e#147\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/sybrenstuvel/python-rsa/commit/fa3282a47457254385f2313c2eceaad4b06186a4\"\u003e\u003ccode\u003efa3282a\u003c/code\u003e\u003c/a\u003e Bumped version to 4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/a364e82caa4cb1fc51400a8c628fb48867fb4362\"\u003e\u003ccode\u003ea364e82\u003c/code\u003e\u003c/a\u003e Marked version 4.7 as released\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/539c54aada3922757099ce1911a28c46e8e81a10\"\u003e\u003ccode\u003e539c54a\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/170\"\u003e#170\u003c/a\u003e: mistake in examples of documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/b81e3171e9f870892e6b8a894db6d00ecd93f544\"\u003e\u003ccode\u003eb81e317\u003c/code\u003e\u003c/a\u003e Declare support for and test Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/06ec1ea1cc7be6034144bd06f07c35eb9d1b4953\"\u003e\u003ccode\u003e06ec1ea\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/162\"\u003e#162\u003c/a\u003e: Blinding uses slow algorithm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/341e5c4f939988bd472530441b6a02b625a30806\"\u003e\u003ccode\u003e341e5c4\u003c/code\u003e\u003c/a\u003e Directly raise \u003ccode\u003eDecryptionError\u003c/code\u003e when crypto length is bad\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/f254895b02f0cb106f9ccee6d8dc6af1a27f0bd1\"\u003e\u003ccode\u003ef254895\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ebytes.find()\u003c/code\u003e instead of \u003ccode\u003ebytes.index()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/240b0d8910299f970921391ea9737cb64ec09208\"\u003e\u003ccode\u003e240b0d8\u003c/code\u003e\u003c/a\u003e Add link to changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/f878c374086e672e7806fdd18401ec6b71cfa960\"\u003e\u003ccode\u003ef878c37\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/164\"\u003e#164\u003c/a\u003e: Add padding length check as described by PKCS#1 v1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/dae8ce0d85478e16f2368b2341632775313d41ed\"\u003e\u003ccode\u003edae8ce0\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e: CVE-2020-25658 - Bleichenbacher-style timing oracle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/compare/version-3.1.4...version-4.7\"\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=rsa\u0026package-manager=pip\u0026previous-version=3.1.4\u0026new-version=4.7)](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 \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/projetoautomatic7-prog/assisnte-juridico-local/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/projetoautomatic7-prog/assisnte-juridico-local/pull/114","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/projetoautomatic7-prog%2Fassisnte-juridico-local/issues/114","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/114/packages"},{"uuid":"3802743037","node_id":"PR_kwDOMftbFc68njza","number":188,"state":"closed","title":"Bump the py-updates group across 1 directory with 79 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-19T04:50:43.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-12T04:41:08.000Z","updated_at":"2026-01-19T04:50:44.000Z","time_to_close":605375,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":79,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.15","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.0","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"22.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.19","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.30.0","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.1","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.51.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 79 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.15` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.25` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.25` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `22.0.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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.25` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.25` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.19` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.11` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.30.0` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.1` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.1` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.51.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.15\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/56a551a5916a09423336124a8967615e0d0be143\"\u003e\u003ccode\u003e56a551a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/b78a64f27cce6dc86754f39196b44f5b1a7f266d\"\u003e\u003ccode\u003eb78a64f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/715bce7cf992e841f04b6b15c701d4292450d9d6\"\u003e\u003ccode\u003e715bce7\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/72510f852833ea976520851bda26757265c6c207\"\u003e\u003ccode\u003e72510f8\u003c/code\u003e\u003c/a\u003e Create update-vpc-link.rst (\u003ca href=\"https://redirect.github.com/aws/aws-cli/issues/9405\"\u003e#9405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/d6a71c953a9155fceb7fcecf4246718153522c4d\"\u003e\u003ccode\u003ed6a71c9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/b2be64a7c3c8747a0cfd7b174307409f9c130420\"\u003e\u003ccode\u003eb2be64a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.14' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/95337ce8110bbd70efef24b8255892a374698e52\"\u003e\u003ccode\u003e95337ce\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3224f1b5e55abc438d1f86f06a70fef3dbaa89ca\"\u003e\u003ccode\u003e3224f1b\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/d90b023b6b34361dec3bffee9b64f62d662fa3d7\"\u003e\u003ccode\u003ed90b023\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/76549b03313edbe5b8e011b9cf35e3e89b5d5387\"\u003e\u003ccode\u003e76549b0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.13' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRelease musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25894\"\u003e#25894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming decompression for CSV \u003ccode\u003eCOUNT(*)\u003c/code\u003e fast path (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25988\"\u003e#25988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd nulls support for rolling_mean_by (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25917\"\u003e#25917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd lazy \u003ccode\u003ecollect_all\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25991\"\u003e#25991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd streaming decompression for NDJSON schema inference (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25992\"\u003e#25992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved handling of unqualified SQL \u003ccode\u003eJOIN\u003c/code\u003e columns that are ambiguous (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25761\"\u003e#25761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25984\"\u003e#25984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpose record batch size in \u003ccode\u003e{sink,write}_ipc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25958\"\u003e#25958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enull_on_oob\u003c/code\u003e parameter to \u003ccode\u003eexpr.get\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25957\"\u003e#25957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSuggest correct timezone if timezone validation fails (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25937\"\u003e#25937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport streaming IPC scan from S3 object store (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25868\"\u003e#25868\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming CSV schema inference (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25911\"\u003e#25911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport hashing of meta expressions (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25916\"\u003e#25916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eSQLContext\u003c/code\u003e recognition of possible table objects in the Python globals (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25749\"\u003e#25749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd pl.Expr.(min|max)_by (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25905\"\u003e#25905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove MemSlice Debug impl (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25913\"\u003e#25913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement or fix json encode/decode for (U)Int128, Categorical, Enum, Decimal (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25896\"\u003e#25896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand scatter to more dtypes (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25874\"\u003e#25874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming CSV decompression (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25842\"\u003e#25842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Series \u003ccode\u003esql\u003c/code\u003e method for API consistency (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25792\"\u003e#25792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMark Polars as safe for free-threading (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25677\"\u003e#25677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Binary and Decimal in arg_(min|max) (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25839\"\u003e#25839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow Decimal parsing in str.json_decode (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25797\"\u003e#25797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eshift\u003c/code\u003e support for Object data type (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25769\"\u003e#25769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing \u003ccode\u003eSeries.arr.mean\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25774\"\u003e#25774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow scientific notation when parsing Decimals (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25711\"\u003e#25711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/1674b37a0a066e76d33eb8f66d31fd870c0cd52d\"\u003e\u003ccode\u003e1674b37\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.0 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26038\"\u003e#26038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/4c49bf5ebb9208e70a84a7effdc5368bc901ba84\"\u003e\u003ccode\u003e4c49bf5\u003c/code\u003e\u003c/a\u003e perf: Speed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/c1b9d86310269ae4ab22a9bff87d8f2657c8b050\"\u003e\u003ccode\u003ec1b9d86\u003c/code\u003e\u003c/a\u003e chore: Update rust compiler (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26017\"\u003e#26017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/68911e4e9f7a2bdedca6d3aefa208a6ec02cf8ad\"\u003e\u003ccode\u003e68911e4\u003c/code\u003e\u003c/a\u003e chore: Improve csv test coverage (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25980\"\u003e#25980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/5f25b4f6b828bcd5df1116b0517358ad51c51529\"\u003e\u003ccode\u003e5f25b4f\u003c/code\u003e\u003c/a\u003e perf: Add fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/59463cefe36550547b50e5c6801b1d98516cc0c8\"\u003e\u003ccode\u003e59463ce\u003c/code\u003e\u003c/a\u003e docs(python): Fix display of deprecation warning (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26010\"\u003e#26010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/21721eba70b9fc18dff58958997c151dfe214903\"\u003e\u003ccode\u003e21721eb\u003c/code\u003e\u003c/a\u003e fix(python): Release GIL on collect_batches (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26033\"\u003e#26033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/778dbb645ccbff8b1e5999a279037571a03c718b\"\u003e\u003ccode\u003e778dbb6\u003c/code\u003e\u003c/a\u003e fix: Missing buffer update in String is_in Parquet pushdown (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26019\"\u003e#26019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/807cfc5a2eae6af453b14a1663e74d07202ce92e\"\u003e\u003ccode\u003e807cfc5\u003c/code\u003e\u003c/a\u003e fix: Make \u003ccode\u003estruct.with_fields\u003c/code\u003e data model coherent (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25610\"\u003e#25610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e6d62387f64b225754c15ad1e0b3d4f981509692\"\u003e\u003ccode\u003ee6d6238\u003c/code\u003e\u003c/a\u003e refactor(rust): Use \u003ccode\u003efrom_any_values_and_dtype\u003c/code\u003e in \u003ccode\u003eSeries::extend_constant\u003c/code\u003e ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8dd60074e59d29c733b6b6eefad3a75ab615090b\"\u003e\u003ccode\u003e8dd6007\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0bf89db7865cfef4ed697b92199c093ca6f5f803\"\u003e\u003ccode\u003e0bf89db\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/34bf8f819c2870d7baa90c6e65f83dea34586bdd\"\u003e\u003ccode\u003e34bf8f8\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9b8fbad82f97a16e4b468b7f9ff83bafa2e8d55d\"\u003e\u003ccode\u003e9b8fbad\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6dda579bbbeafe145506fb40a65a2f7979f196c2\"\u003e\u003ccode\u003e6dda579\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dc3945deb487ce84d804cb813b8075461973041f\"\u003e\u003ccode\u003edc3945d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/60784e3398975b90331d227e1377a42232fd3f8a\"\u003e\u003ccode\u003e60784e3\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dae67fb6753924da30b42cc61dc0d940a672afbd\"\u003e\u003ccode\u003edae67fb\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c7b7d4157a8130921bf9e7bef024a1dd17eaf600\"\u003e\u003ccode\u003ec7b7d41\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/95878f640e54fa7658e242eb2213d361b92162c2\"\u003e\u003ccode\u003e95878f6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.23\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/a35f376045da3bc2dcf0de2c1346482ce1ad30c7\"\u003e\u003ccode\u003ea35f376\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/721ab7860e75d7c5ef5c0eda91f18c568b2f31e1\"\u003e\u003ccode\u003e721ab78\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b4541b5471194a63234467945b97397e42e265e4\"\u003e\u003ccode\u003eb4541b5\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/90830226c8e3cd3b96755c3b71be3314225871e3\"\u003e\u003ccode\u003e9083022\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/331cd6689f458e58465234ad58a60881d49007fa\"\u003e\u003ccode\u003e331cd66\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/47f2b30e092fd853d28193d60cb10acf8a89b5ec\"\u003e\u003ccode\u003e47f2b30\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/230fac5f074e94b3c32f112624c04224d123873d\"\u003e\u003ccode\u003e230fac5\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/cc102f140d97d286544a36adb5c3fc6043c50321\"\u003e\u003ccode\u003ecc102f1\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/beaeab5eee438b737029aa27c7b7641ec89ba3ad\"\u003e\u003ccode\u003ebeaeab5\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/f6e323727729fb2aa26ec9f8362de39d6adf1d2e\"\u003e\u003ccode\u003ef6e3237\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.4.26 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak in flat assignment iterator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30516\"\u003e#30516\u003c/a\u003e: BUG: fix heap overflow in fixed-width string multiply (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30511\"\u003e#30511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30523\"\u003e#30523\u003c/a\u003e: BUG: Ensure summed weights returned by np.average always are...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30527\"\u003e#30527\u003c/a\u003e: TYP: Fix return type of histogram2d\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30594\"\u003e#30594\u003c/a\u003e: MAINT: avoid passing ints to random functions that take double...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30595\"\u003e#30595\u003c/a\u003e: BLD: Avoiding conflict with pygit2 for static build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30596\"\u003e#30596\u003c/a\u003e: MAINT: Fix msvccompiler missing error on FreeBSD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30608\"\u003e#30608\u003c/a\u003e: BLD: update vendored Meson to 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30620\"\u003e#30620\u003c/a\u003e: ENH: use more fine-grained critical sections in array coercion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30623\"\u003e#30623\u003c/a\u003e: BUG: Undo result type change of quantile/percentile but keep...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0 (Dec 20, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.0 release continues the work to improve free threaded Python\nsupport, user dtypes implementation, and annotations. There are many expired\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/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst\"\u003enumpy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis is a walkthrough of the NumPy 2.4.0 release on Linux, which will be the\nfirst feature release using the \u003ccode\u003enumpy/numpy-release \u0026lt;https://github.com/numpy/numpy-release\u0026gt;\u003c/code\u003e__ repository.\u003c/p\u003e\n\u003cp\u003eThe comm...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/188","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/188","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/188/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":"3770637328","node_id":"PR_kwDOJSppwM66_m_n","number":48,"state":"open","title":"chore(deps): bump the production group in /backend with 60 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-30T16:10:14.000Z","updated_at":"2025-12-30T18:01:47.191Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"production","update_count":60,"packages":[{"name":"alembic","old_version":"1.13.3","new_version":"1.17.2","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"celery","old_version":"5.4.0","new_version":"5.6.1","repository_url":"https://github.com/celery/celery"},{"name":"minio","old_version":"7.2.9","new_version":"7.2.20","repository_url":"https://github.com/minio/minio-py"},{"name":"psycopg","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.5.2","new_version":"2.12.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"sqlmodel","old_version":"0.0.22","new_version":"0.0.31","repository_url":"https://github.com/fastapi/sqlmodel"},{"name":"httpcore","old_version":"1.0.5","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"greenlet","old_version":"3.0.3","new_version":"3.3.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"aiosqlite","old_version":"0.20.0","new_version":"0.22.1","repository_url":"https://github.com/omnilib/aiosqlite"},{"name":"coverage","old_version":"7.6.2","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"factory-boy","old_version":"3.3.1","new_version":"3.3.3","repository_url":"https://github.com/FactoryBoy/factory_boy"},{"name":"ruff","old_version":"0.6.9","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"amqp","old_version":"5.2.0","new_version":"5.3.1","repository_url":"https://github.com/celery/py-amqp"},{"name":"anyio","old_version":"4.4.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"billiard","old_version":"4.2.0","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"click","old_version":"8.1.7","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":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"ecdsa","old_version":"0.19.0","new_version":"0.19.1","repository_url":"https://github.com/tlsfuzzer/python-ecdsa"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastapi","old_version":"0.115.0","new_version":"0.128.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.15.4","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"httptools","old_version":"0.6.1","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"identify","old_version":"2.6.0","new_version":"2.6.15","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.7","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jiter","old_version":"0.5.0","new_version":"0.12.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"kombu","old_version":"5.3.7","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"mako","old_version":"1.3.5","new_version":"1.3.10","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"platformdirs","old_version":"4.2.2","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":"pre-commit","old_version":"4.0.1","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"prompt-toolkit","old_version":"3.0.47","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pyasn1","old_version":"0.6.0","new_version":"0.6.1","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pycryptodome","old_version":"3.20.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pydantic-core","old_version":"2.20.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0","repository_url":"https://github.com/mpdavis/python-jose"},{"name":"python-multipart","old_version":"0.0.12","new_version":"0.0.21","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"sqladmin","old_version":"0.19.0","new_version":"0.22.0","repository_url":"https://github.com/aminalaee/sqladmin"},{"name":"sqlalchemy","old_version":"2.0.31","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"0.37.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tqdm","old_version":"4.66.4","new_version":"4.67.1","repository_url":"https://github.com/tqdm/tqdm"},{"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.2","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.31.1","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"20.26.3","new_version":"20.35.4","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":"wtforms","old_version":"3.1.2","new_version":"3.2.1","repository_url":"https://github.com/pallets-eco/wtforms"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the production group in /backend with 60 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.3` | `1.17.2` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [celery](https://github.com/celery/celery) | `5.4.0` | `5.6.1` |\n| [minio](https://github.com/minio/minio-py) | `7.2.9` | `7.2.20` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.2.3` | `3.3.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.5.2` | `2.12.0` |\n| [sqlmodel](https://github.com/fastapi/sqlmodel) | `0.0.22` | `0.0.31` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.5` | `1.0.9` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.0.3` | `3.3.0` |\n| [aiosqlite](https://github.com/omnilib/aiosqlite) | `0.20.0` | `0.22.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.6.2` | `7.13.1` |\n| [factory-boy](https://github.com/FactoryBoy/factory_boy) | `3.3.1` | `3.3.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.6.9` | `0.14.10` |\n| [amqp](https://github.com/celery/py-amqp) | `5.2.0` | `5.3.1` |\n| [anyio](https://github.com/agronholm/anyio) | `4.4.0` | `4.12.0` |\n| [billiard](https://github.com/celery/billiard) | `4.2.0` | `4.2.4` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [ecdsa](https://github.com/tlsfuzzer/python-ecdsa) | `0.19.0` | `0.19.1` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.0` | `0.128.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.15.4` | `3.20.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.1` | `0.7.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.0` | `2.6.15` |\n| [idna](https://github.com/kjd/idna) | `3.7` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.3.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [jiter](https://github.com/pydantic/jiter) | `0.5.0` | `0.12.0` |\n| [kombu](https://github.com/celery/kombu) | `5.3.7` | `5.6.2` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.5` | `1.3.10` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.2` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.0.1` | `4.5.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.47` | `3.0.52` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.0` | `0.6.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.20.0` | `3.23.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.20.1` | `2.41.5` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-jose](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.12` | `0.0.21` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [sqladmin](https://github.com/aminalaee/sqladmin) | `0.19.0` | `0.22.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.31` | `2.0.45` |\n| [starlette](https://github.com/Kludex/starlette) | `0.37.2` | `0.50.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.66.4` | `4.67.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.2` | `2.6.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.31.1` | `0.40.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.26.3` | `20.35.4` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n| [wtforms](https://github.com/pallets-eco/wtforms) | `3.1.2` | `3.2.1` |\n\nUpdates `alembic` from 1.13.3 to 1.17.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.17.2\u003c/h1\u003e\n\u003cp\u003eReleased: November 14, 2025\u003c/p\u003e\n\u003ch2\u003efeature\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [operations]\u003c/strong\u003e Added \u003ccode\u003eOperations.implementation_for.replace\u003c/code\u003e parameter to\n\u003ccode\u003eOperations.implementation_for()\u003c/code\u003e, allowing replacement of existing\noperation implementations.  This allows for existing operations such as\n\u003ccode\u003eCreateTableOp\u003c/code\u003e to be extended directly.  Pull request courtesy\njustanothercatgirl.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1750\"\u003e#1750\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mssql]\u003c/strong\u003e Fixed issue in SQL Server dialect where the DROP that's automatically\nemitted for existing default constraints during an ALTER COLUMN needs to\ntake place before not just the modification of the column's default, but\nalso before the column's type is changed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1744\"\u003e#1744\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.17.1\u003c/h1\u003e\n\u003cp\u003eReleased: October 28, 2025\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003ecommand.current.check_heads\u003c/code\u003e parameter to\n\u003ccode\u003ecommand.current()\u003c/code\u003e command, available from the command line via the\n\u003ccode\u003e--check-heads\u003c/code\u003e option to \u003ccode\u003ealembic current\u003c/code\u003e.  This tests if all head\nrevisions are applied to the database and raises \u003ccode\u003eDatabaseNotAtHead\u003c/code\u003e\n(or from the command line, exits with a non-zero exit code) if this is not\nthe case.  The parameter operates equvialently to the cookbook recipe\n\u003ccode\u003ecookbook_check_heads\u003c/code\u003e. Pull request courtesy Stefan Scherfke.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[bug] [commands]\u003c/strong\u003e Disallow ':' character in custom revision identifiers. Previously, using a\ncolon in a revision ID (e.g., 'REV:1') would create the revision, however\nrevisions with colons in them are not correctly interpreted by other\ncommands, as it overlaps with the revision range syntax.   Pull request\ncourtesy Kim Wooseok with original implementation by Hrushikesh Patil.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.29.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.30.0\u003c/h2\u003e\n\u003cp\u003eSupport Python 3.13 and PostgreSQL 17.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImplement GSSAPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1d4e5680 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1122\"\u003e#1122\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement SSPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1aab2094 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1128\"\u003e#1128\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd initial typings\n(by \u003ca href=\"https://github.com/bryanforbes\"\u003e\u003ccode\u003e@​bryanforbes\u003c/code\u003e\u003c/a\u003e in d42432bf for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1127\"\u003e#1127\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow building with Cython 3\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/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.29.0...v0.31.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.6.1\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.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10020\"\u003ecelery/celery#10020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup by \u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereliable prefork detection by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10023\"\u003ecelery/celery#10023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebetter coverage by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10029\"\u003ecelery/celery#10029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example by \u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests 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/10032\"\u003ecelery/celery#10032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 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/celery/pull/10033\"\u003ecelery/celery#10033\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/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\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.6.0...v5.6.1\"\u003ehttps://github.com/celery/celery/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.celeryq.dev/en/stable/history/whatsnew-5.6.html\"\u003eWhat's new in Celery 5.6\u003c/a\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch3\u003ePython 3.9 Minimum Version\u003c/h3\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python version is now 3.9. Users still on Python 3.8 must upgrade their Python version before upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in Celery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS users.\u003c/p\u003e\n\u003cp\u003eContributed 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/9620\"\u003ecelery/celery#9620\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eSecurity Fix: Broker Credential Leak Prevention\u003c/h3\u003e\n\u003cp\u003eFixed a security issue where broker URLs containing passwords were being logged in plaintext by the delayed delivery mechanism. Broker credentials are now properly sanitized in all log output.\u003c/p\u003e\n\u003cp\u003eContributed by \u003ca href=\"https://github.com/giancarloromeo\"\u003e\u003ccode\u003e@​giancarloromeo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9997\"\u003ecelery/celery#9997\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eMemory Leak Fixes\u003c/h3\u003e\n\u003cp\u003eTwo significant memory leaks have been fixed in this release:\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/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-12-29\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Redis Sentinel ACL authentication support ([#10013](https://github.com/celery/celery/issues/10013))\n- Fix: Broker heartbeats not sent during graceful shutdown ([#9986](https://github.com/celery/celery/issues/9986))\n- docs [#5410](https://github.com/celery/celery/issues/5410) -- Document confirm_publish broker transport option ([#10016](https://github.com/celery/celery/issues/10016))\n- close DB pools only in prefork mode ([#10020](https://github.com/celery/celery/issues/10020))\n- Fix: Avoid unnecessary Django database connection creation during cleanup ([#10015](https://github.com/celery/celery/issues/10015))\n- reliable prefork detection ([#10023](https://github.com/celery/celery/issues/10023))\n- better coverage ([#10029](https://github.com/celery/celery/issues/10029))\n- Docs: clarify `result_extended` vs periodic task metadata and show `headers[\u0026quot;periodic_task_name\u0026quot;]` example ([#10030](https://github.com/celery/celery/issues/10030))\n- Stop importing pytest_subtests ([#10032](https://github.com/celery/celery/issues/10032))\n- Only use exceptiongroup backport for Python \u0026lt; 3.11 ([#10033](https://github.com/celery/celery/issues/10033))\n- Prepare for release: v5.6.1 ([#10037](https://github.com/celery/celery/issues/10037))\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-11-30\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003cp\u003eKey Highlights\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eSee :ref:\u003ccode\u003ewhatsnew-5.6\u003c/code\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch2\u003ePython 3.9 Minimum Version\u003c/h2\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python\nversion is now 3.9. Users still on Python 3.8 must upgrade their Python version\nbefore upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch2\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in\nCelery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS\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/celery/celery/commit/21dbc73f81d2fae058de49e665afaa1cd92da5c0\"\u003e\u003ccode\u003e21dbc73\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ba20bed7723c684d12ddd62d6a7c0c0d901b3351\"\u003e\u003ccode\u003eba20bed\u003c/code\u003e\u003c/a\u003e Only use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21675299bc2d10c648448ec5221136e07c1eec1a\"\u003e\u003ccode\u003e2167529\u003c/code\u003e\u003c/a\u003e Stop importing pytest_subtests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0527296acb1f1790788301d4395ba6d5ce2a9704\"\u003e\u003ccode\u003e0527296\u003c/code\u003e\u003c/a\u003e Bump google-cloud-firestore from 2.21.0 to 2.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5f8659bdba4561796d66e938a1e2c71d4489562f\"\u003e\u003ccode\u003e5f8659b\u003c/code\u003e\u003c/a\u003e Clarify 'result_extended' setting usage in tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f19db7008682c782d85e69b5ce736970491752ea\"\u003e\u003ccode\u003ef19db70\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.19.0 to 1.19.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10028\"\u003e#10028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6da72bde60553a1c350eef1e17d834d004ed099d\"\u003e\u003ccode\u003e6da72bd\u003c/code\u003e\u003c/a\u003e better coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/170fe556eca986da69aecba10e408859e871ada0\"\u003e\u003ccode\u003e170fe55\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10027\"\u003e#10027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/cb08d5042a8ce1758a7460ca6856491b36949f20\"\u003e\u003ccode\u003ecb08d50\u003c/code\u003e\u003c/a\u003e reliable prefork detection (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10023\"\u003e#10023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/cc3350ef9867a34b1f3563222bd015d123ef1ad7\"\u003e\u003ccode\u003ecc3350e\u003c/code\u003e\u003c/a\u003e Fix: Avoid unnecessary Django database connection creation during cleanup (\u003ca href=\"https://redirect.github.com/celery/celery/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.4.0...v5.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `minio` from 7.2.9 to 7.2.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/minio/minio-py/releases\"\u003eminio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBugfix Release 7.2.20\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnable github CI run by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1543\"\u003eminio/minio-py#1543\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BaseException internals to be set (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1521\"\u003e#1521\u003c/a\u003e) by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1539\"\u003eminio/minio-py#1539\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Add missing type annotations to serialization dataclass fields (… by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1540\"\u003eminio/minio-py#1540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport optional parameters in LdapIdentityProvider (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1528\"\u003e#1528\u003c/a\u003e) by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1541\"\u003eminio/minio-py#1541\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix object_size/headers in ComposeSource by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1545\"\u003eminio/minio-py#1545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix complete_multipart_upload() to support SSE-C by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1544\"\u003eminio/minio-py#1544\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.18...7.2.20\"\u003ehttps://github.com/minio/minio-py/compare/7.2.18...7.2.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix release 7.2.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd region, extra_headers and extra_query_params by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1505\"\u003eminio/minio-py#1505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BaseException internals to be set by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1521\"\u003eminio/minio-py#1521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Add missing type annotations to serialization dataclass fields by \u003ca href=\"https://github.com/rraulinio\"\u003e\u003ccode\u003e@​rraulinio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1527\"\u003eminio/minio-py#1527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport optional parameters in LdapIdentityProvider by \u003ca href=\"https://github.com/jkandasa\"\u003e\u003ccode\u003e@​jkandasa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1528\"\u003eminio/minio-py#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncorrect existing checksum headers to both CreateMultipartUpload and UploadPart requests by \u003ca href=\"https://github.com/rraulinio\"\u003e\u003ccode\u003e@​rraulinio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1529\"\u003eminio/minio-py#1529\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/rraulinio\"\u003e\u003ccode\u003e@​rraulinio\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1527\"\u003eminio/minio-py#1527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jkandasa\"\u003e\u003ccode\u003e@​jkandasa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1528\"\u003eminio/minio-py#1528\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.18...7.2.19\"\u003ehttps://github.com/minio/minio-py/compare/7.2.18...7.2.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix Release 7.2.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix ETag parsing in CompleteMultipartUploadResult by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1518\"\u003eminio/minio-py#1518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecredentials: set expiration using object.\u003cstrong\u003esetattr\u003c/strong\u003e() by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1516\"\u003eminio/minio-py#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecleanup: SSE-C keys fix a misleading error message by \u003ca href=\"https://github.com/marktheunissen\"\u003e\u003ccode\u003e@​marktheunissen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1514\"\u003eminio/minio-py#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add py.typed in setup.py by \u003ca href=\"https://github.com/tughril\"\u003e\u003ccode\u003e@​tughril\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1513\"\u003eminio/minio-py#1513\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/marktheunissen\"\u003e\u003ccode\u003e@​marktheunissen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1514\"\u003eminio/minio-py#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tughril\"\u003e\u003ccode\u003e@​tughril\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1513\"\u003eminio/minio-py#1513\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.17...7.2.18\"\u003ehttps://github.com/minio/minio-py/compare/7.2.17...7.2.18\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix Release 7.2.17\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinioAdmin: allow specifying policies as dict besides file by \u003ca href=\"https://github.com/Alveel\"\u003e\u003ccode\u003e@​Alveel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1480\"\u003eminio/minio-py#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix too-many-positional-arguments error and other issues by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1504\"\u003eminio/minio-py#1504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCredentials: redact password in URL by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1511\"\u003eminio/minio-py#1511\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.16...7.2.17\"\u003ehttps://github.com/minio/minio-py/compare/7.2.16...7.2.17\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix Release\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/f671ca948b35978c39a3100e4ae0e9b93416b911\"\u003e\u003ccode\u003ef671ca9\u003c/code\u003e\u003c/a\u003e Update version to next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/53c8c93f78acae9bfbd48974e8de82f831e74927\"\u003e\u003ccode\u003e53c8c93\u003c/code\u003e\u003c/a\u003e fix complete_multipart_upload() to support SSE-C (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/27997bdc71e0360ca5dabf87193b5bde2be38e31\"\u003e\u003ccode\u003e27997bd\u003c/code\u003e\u003c/a\u003e fix object_size/headers in ComposeSource (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1545\"\u003e#1545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/dd17dfb9bc5482a160f667ece87c128fa9cd9fe7\"\u003e\u003ccode\u003edd17dfb\u003c/code\u003e\u003c/a\u003e support optional parameters in LdapIdentityProvider (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1528\"\u003e#1528\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1541\"\u003e#1541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/4170c34351595f0890e4b7d2dfbc03cccc401e3b\"\u003e\u003ccode\u003e4170c34\u003c/code\u003e\u003c/a\u003e Fix: Add missing type annotations to serialization dataclass fields (… (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/da273039c52a48f838f74a83520d59d5a3c12adf\"\u003e\u003ccode\u003eda27303\u003c/code\u003e\u003c/a\u003e Make BaseException internals to be set (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1521\"\u003e#1521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1539\"\u003e#1539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/535ac42819272894e030a390904f917dd5ec675d\"\u003e\u003ccode\u003e535ac42\u003c/code\u003e\u003c/a\u003e Enable github CI run (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/64ed1ef509545107eb771b7ae150d1311ccdf271\"\u003e\u003ccode\u003e64ed1ef\u003c/code\u003e\u003c/a\u003e Update version to next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/ff647fe1fcb0ffb1ed190b6c6d1c8c958056508f\"\u003e\u003ccode\u003eff647fe\u003c/code\u003e\u003c/a\u003e feat: add py.typed in setup.py (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1513\"\u003e#1513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/ddb99190885a7b951339beec1ba5984c93be1341\"\u003e\u003ccode\u003eddb9919\u003c/code\u003e\u003c/a\u003e cleanup: SSE-C keys fix a misleading error message (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1514\"\u003e#1514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.9...7.2.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg` from 3.2.3 to 3.3.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003ePsycopg 3.3.1\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix iteration on server-side cursors (:ticket:\u003ccode\u003e[#1226](https://github.com/psycopg/psycopg/issues/1226)\u003c/code\u003e).\u003c/p\u003e\n\u003ch2\u003ePsycopg 3.3.0\u003c/h2\u003e\n\u003cp\u003e.. rubric:: New top-level features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd :ref:\u003ccode\u003etemplate strings queries \\\u0026lt;template-strings\u0026gt;\u003c/code\u003e (:ticket:\u003ccode\u003e[#1054](https://github.com/psycopg/psycopg/issues/1054)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eMore flexible :ref:\u003ccode\u003ecomposite adaptation\u0026lt;adapt-composite\u0026gt;\u003c/code\u003e: it is now possible\nto adapt Python objects to PostgreSQL composites and back even if they are not\nsequences or if they take keyword arguments (:ticket:\u003ccode\u003e[#932](https://github.com/psycopg/psycopg/issues/932)\u003c/code\u003e, :ticket:\u003ccode\u003e[#1202](https://github.com/psycopg/psycopg/issues/1202)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eCursors are now iterators_, not just iterables_. This means you can call\n\u003ccode\u003enext\u003c/code\u003e\\ \u003ccode\u003e(cur)\u003c/code\u003e or \u003ccode\u003eanext\u003c/code\u003e\\ \u003ccode\u003e(cur)\u003c/code\u003e, which is useful as a :ref:\u003ccode\u003etype-safe expression \u0026lt;typing-fetchone\u0026gt;\u003c/code\u003e (:ticket:\u003ccode\u003e[#1064](https://github.com/psycopg/psycopg/issues/1064)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eCursor.set_result()\u003c/code\u003e and \u003ccode\u003eCursor.results()\u003c/code\u003e to move across the result\nsets of queries executed though \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e or\n\u003ccode\u003e~Cursor.execute()\u003c/code\u003e with multiple statements (:tickets:\u003ccode\u003e[#1080](https://github.com/psycopg/psycopg/issues/1080), [#1170](https://github.com/psycopg/psycopg/issues/1170)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd :ref:\u003ccode\u003etransaction-status\u003c/code\u003e to report the status during and after a\n\u003ccode\u003e~Connection.transaction()\u003c/code\u003e block (:ticket:\u003ccode\u003e[#969](https://github.com/psycopg/psycopg/issues/969)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAllow to change loaders using \u003ccode\u003e~adapt.AdaptersMap.register_loader()\u003c/code\u003e on\n\u003ccode\u003eCursor.adapters\u003c/code\u003e after a query result has been already returned\n(:ticket:\u003ccode\u003e[#884](https://github.com/psycopg/psycopg/issues/884)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. rubric:: New libpq wrapper features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epq.PGconn.used_gssapi\u003c/code\u003e attribute and \u003ccode\u003eCapabilities.has_used_gssapi()\u003c/code\u003e\nfunction (:ticket:\u003ccode\u003e[#1138](https://github.com/psycopg/psycopg/issues/1138)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eConnectionInfo.full_protocol_version\u003c/code\u003e attribute,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc9e7bde14acd080c7597185a7904a4bc246ed0e\"\u003e\u003ccode\u003ebc9e7bd\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/3bcabb4592c6352aedb23f315dbd81326e9fbd14\"\u003e\u003ccode\u003e3bcabb4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1231\"\u003e#1231\u003c/a\u003e from noirbee/fix/1230-adapter-get-dumper-race-condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/08bfe006ae0d9dea00b69f6a6df8497a0c0e4965\"\u003e\u003ccode\u003e08bfe00\u003c/code\u003e\u003c/a\u003e fix(adapters): avoid race condition when replacing class name with itself\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7be710e7cbe42c94288efeda0bb5a87ad9659f03\"\u003e\u003ccode\u003e7be710e\u003c/code\u003e\u003c/a\u003e fix: mark external libpq C functions as noexcept nogil\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/6a24300ad2392e502a7c9d3c244ead6852890d90\"\u003e\u003ccode\u003e6a24300\u003c/code\u003e\u003c/a\u003e docs: larger font for 3.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/5a60a1e6b2394e6d3ccdb1d08cfd24d6fbac3d78\"\u003e\u003ccode\u003e5a60a1e\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.2.dev1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/9bdd78cf4360b9229ab3f641c646e232fc69cc8a\"\u003e\u003ccode\u003e9bdd78c\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/4d27426bf197a1eca8ea99ab9e236e1c8e0f15fa\"\u003e\u003ccode\u003e4d27426\u003c/code\u003e\u003c/a\u003e Merge branch 'fix/server-cursor-iter'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b9b82e86e3ce1972581a495ccbe28d5dbb15c449\"\u003e\u003ccode\u003eb9b82e8\u003c/code\u003e\u003c/a\u003e fix: fix iteration on server-side cursor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2a75357de22bb63ede33006cd17c99b30e360cdf\"\u003e\u003ccode\u003e2a75357\u003c/code\u003e\u003c/a\u003e fix: add test to verify iteration in server-side cursor broken\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.2.3...3.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.8.2 to 2.12.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\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/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.8.2...v2.12.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.5.2 to 2.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for enum kebab case. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/686\"\u003epydantic/pydantic-settings#686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eApply source order: init \u0026gt; env \u0026gt; dotenv \u0026gt; secrets \u0026gt; defaults and pres… by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/688\"\u003epydantic/pydantic-settings#688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd NestedSecretsSettings source by \u003ca href=\"https://github.com/makukha\"\u003e\u003ccode\u003e@​makukha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/690\"\u003epydantic/pydantic-settings#690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip non-explicit default values. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/692\"\u003epydantic/pydantic-settings#692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoerce env vars if strict is True. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/693\"\u003epydantic/pydantic-settings#693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore init kwarg names before returning final state dictionary. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/700\"\u003epydantic/pydantic-settings#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python3.9 support by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/699\"\u003epydantic/pydantic-settings#699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt test_protected_namespace_defaults for dev. Pydantic by \u003ca href=\"https://github.com/musicinmybrain\"\u003e\u003ccode\u003e@​musicinmybrain\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/637\"\u003epydantic/pydantic-settings#637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/704\"\u003epydantic/pydantic-settings#704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.12 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/705\"\u003epydantic/pydantic-settings#705\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/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/688\"\u003epydantic/pydantic-settings#688\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.11.0...v2.12.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.11.0...v2.12.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.11.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCLI Serialize Support by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/643\"\u003epydantic/pydantic-settings#643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInspect type aliases to determine if an annotation is complex by \u003ca href=\"https://github.com/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/644\"\u003epydantic/pydantic-settings#644\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;fix: Respect 'cli_parse_args' from model_config with settings_customise_sources (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/611\"\u003e#611\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/655\"\u003epydantic/pydantic-settings#655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove parsing of command line arguments from \u003ccode\u003eCliSettingsSource.__init__\u003c/code\u003e. by \u003ca href=\"https://github.com/trygve-baerland\"\u003e\u003ccode\u003e@​trygve-baerland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/656\"\u003epydantic/pydantic-settings#656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eturn off allow_abbrev on subparsers by \u003ca href=\"https://github.com/mroch\"\u003e\u003ccode\u003e@​mroch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/658\"\u003epydantic/pydantic-settings#658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI Serialization Fixes by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/649\"\u003epydantic/pydantic-settings#649\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PydanticModel type checking. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/659\"\u003epydantic/pydantic-settings#659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid env_prefix falling back to env vars without prefix by \u003ca href=\"https://github.com/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/648\"\u003epydantic/pydantic-settings#648\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWarn if model_config sets unused keys for missing settings sources by \u003ca href=\"https://github.com/HomerusJa\"\u003e\u003ccode\u003e@​HomerusJa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/663\"\u003epydantic/pydantic-settings#663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncluded endpoint_url kwarg in AWSSecretsManagerSettingsSource class by \u003ca href=\"https://github.com/adrianohrl\"\u003e\u003ccode\u003e@​adrianohrl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/664\"\u003epydantic/pydantic-settings#664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo (\u0026quot;Accesing\u0026quot;) in the \u0026quot;Adding sources\u0026quot; docs by \u003ca href=\"https://github.com/deepyaman\"\u003e\u003ccode\u003e@​deepyaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/668\"\u003epydantic/pydantic-settings#668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI Windows Path Fix by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/669\"\u003epydantic/pydantic-settings#669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCli root model support by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/677\"\u003epydantic/pydantic-settings#677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSnake case conversion in Azure Key Vault by \u003ca href=\"https://github.com/AndreuCodina\"\u003e\u003ccode\u003e@​AndreuCodina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/680\"\u003epydantic/pydantic-settings#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eInitSettingsSource\u003c/code\u003e resolution deterministic by \u003ca href=\"https://github.com/enrico-stauss\"\u003e\u003ccode\u003e@​enrico-stauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/681\"\u003epydantic/pydantic-settings#681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate deps by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/683\"\u003epydantic/pydantic-settings#683\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/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/644\"\u003epydantic/pydantic-settings#644\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/trygve-baerland\"\u003e\u003ccode\u003e@​trygve-baerland\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/656\"\u003epydantic/pydantic-settings#656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mroch\"\u003e\u003ccode\u003e@​mroch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/658\"\u003epydantic/pydantic-settings#658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HomerusJa\"\u003e\u003ccode\u003e@​HomerusJa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/663\"\u003epydantic/pydantic-settings#663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adrianohrl\"\u003e\u003ccode\u003e@​adrianohrl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/664\"\u003epydantic/pydantic-settings#664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/deepyaman\"\u003e\u003ccode\u003e@​deepyaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/668\"\u003epydantic/pydantic-settings#668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enrico-stauss\"\u003e\u003ccode\u003e@​enrico-stauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/681\"\u003epydantic/pydantic-settings#681\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/2.10.1...v2.11.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/2.10.1...v2.11.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.10.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/584983d253a0fac4dfb294d1e6f9ef188add468b\"\u003e\u003ccode\u003e584983d\u003c/code\u003e\u003c/a\u003e Prepare release 2.12 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/705\"\u003e#705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/6b4d87e77698476433031c0056ce71aa4f4a7c4e\"\u003e\u003ccode\u003e6b4d87e\u003c/code\u003e\u003c/a\u003e Add Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/02de5b622b8648404aa792df01599aa1179c3aa7\"\u003e\u003ccode\u003e02de5b6\u003c/code\u003e\u003c/a\u003e Adapt test_protected_namespace_defaults for dev. Pydantic (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/637\"\u003e#637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4239ea460a5c465a4ce908c52e9606549b38fa98\"\u003e\u003ccode\u003e4239ea4\u003c/code\u003e\u003c/a\u003e Drop Python3.9 support (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/699\"\u003e#699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/5008c694f684f88fd310f476871ec021426e98d7\"\u003e\u003ccode\u003e5008c69\u003c/code\u003e\u003c/a\u003e Restore init kwarg names before returning final state dictionary. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/700\"\u003e#700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4433101fef6770d3fc0844846f7f3837bfec3b10\"\u003e\u003ccode\u003e4433101\u003c/code\u003e\u003c/a\u003e Coerce env vars if strict is True. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4d2ebfd543e6011f6b71a99042007adf7e613ae9\"\u003e\u003ccode\u003e4d2ebfd\u003c/code\u003e\u003c/a\u003e Strip non-explicit default values. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4a6ffcaeae451199b1873c6709b28aceae7317a7\"\u003e\u003ccode\u003e4a6ffca\u003c/code\u003e\u003c/a\u003e Add NestedSecretsSettings source (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7a6e96ebfc89ddb5b20dfb068c8ed46b6ff18a7f\"\u003e\u003ccode\u003e7a6e96e\u003c/code\u003e\u003c/a\u003e Apply source order: init \u0026gt; env \u0026gt; dotenv \u0026gt; secrets \u0026gt; defaults and pres… (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/68563eddc09856b94ea0ca156dd75040b4e048e4\"\u003e\u003ccode\u003e68563ed\u003c/code\u003e\u003c/a\u003e Support for enum kebab case. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/686\"\u003e#686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.5.2...v2.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlmodel` from 0.0.22 to 0.0.31\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/sqlmodel/releases\"\u003esqlmodel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.31\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Pydantic v1. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1701\"\u003e#1701\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump dirty-equals from 0.9.0 to 0.11. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1649\"\u003e#1649\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.0 to 9.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1690\"\u003e#1690\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.20.1 to 0.21.0. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1694\"\u003e#1694\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📌 Relax \u003ccode\u003eprek\u003c/code\u003e version pin to \u003ccode\u003e\u0026gt;=0.2.24,\u0026lt;1.0.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1698\"\u003e#1698\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.30\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1696\"\u003e#1696\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8 in CI and docs. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1695\"\u003e#1695\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Update pre-commit, generate select on pre-commit, use local Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1697\"\u003e#1697\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1692\"\u003e#1692\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Add pre-commit workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1684\"\u003e#1684\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Simplify tests for code examples, one test file for multiple variants. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1664\"\u003e#1664\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1677\"\u003e#1677\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 6 to 7. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1676\"\u003e#1676\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 4 to 5. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1673\"\u003e#1673\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump markdown-include-variants from 0.0.5 to 0.0.8. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1674\"\u003e#1674\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1675\"\u003e#1675\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.18.2 to 1.19.1. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1679\"\u003e#1679\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.20.0 to 0.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1685\"\u003e#1685\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.8 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1681\"\u003e#1681\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.29\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003ealias\u003c/code\u003e support for Pydantic v2. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1577\"\u003e#1577\u003c/a\u003e by \u003ca href=\"https://github.com/ravishan16\"\u003e\u003ccode\u003e@​ravishan16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.28\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRuntimeError: dictionary changed size during iteration\u003c/code\u003e in \u003ccode\u003esqlmodel_update()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/997\"\u003e#997\u003c/a\u003e by \u003ca href=\"https://github.com/BartSchuurmans\"\u003e\u003ccode\u003e@​BartSchuurmans\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💅 Update CSS to explicitly use emoji font. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1658\"\u003e#1658\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update link to JetBrains Python survey in \u003ccode\u003efeatures.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1627\"\u003e#1627\u003c/a\u003e by \u003ca href=\"https://github.com/sparkiegeek\"\u003e\u003ccode\u003e@​sparkiegeek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/sqlmodel/blob/main/docs/release-notes.md\"\u003esqlmodel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.31\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Pydantic v...\n\n_Description has been truncated_","html_url":"https://github.com/ElderEvil/falloutProject/pull/48","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElderEvil%2FfalloutProject/issues/48","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/48/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":"3750489899","node_id":"PR_kwDONKf2os65-bzP","number":53,"state":"closed","title":"Bump rsa from 4.9 to 4.9.1 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-01-14T02:54:29.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-20T22:38:57.000Z","updated_at":"2026-01-14T02:54:30.000Z","time_to_close":2088932,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [rsa](https://github.com/sybrenstuvel/python-rsa) from 4.9 to 4.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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=rsa\u0026package-manager=pip\u0026previous-version=4.9\u0026new-version=4.9.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/andreineagoe23/monevo/pull/53","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreineagoe23%2Fmonevo/issues/53","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/53/packages"},{"uuid":"3749949011","node_id":"PR_kwDOQbGCE8658zmy","number":2,"state":"open","title":"chore(deps): bump rsa from 3.1.4 to 4.7 in /buildproapp2/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-20T11:02:19.000Z","updated_at":"2025-12-20T11:03:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"rsa","old_version":"3.1.4","new_version":"4.7","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/buildproapp2/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","ecosystem":"pip"},"body":"Bumps the pip group with 1 update in the /buildproapp2/google-cloud-sdk/platform/gsutil/gslib/vendored/boto directory: [rsa](https://github.com/sybrenstuvel/python-rsa).\n\nUpdates `rsa` from 3.1.4 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.7 - released 2021-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e:\nCVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption\ncode\u003c/li\u003e\n\u003cli\u003eAdd padding length check as described by PKCS#1 v1.5 (Fixes\n\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReuse of blinding factors to speed up blinding operations.\nFixes \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/162\"\u003e#162\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDeclare \u0026amp; test support for Python 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.4 \u0026amp; 4.6 - released 2020-06-12\u003c/h2\u003e\n\u003cp\u003eVersion 4.4 and 4.6 are almost a re-tagged release of version 4.2. It requires\nPython 3.5+. To avoid older Python installations from trying to upgrade to RSA\n4.4, this is now made explicit in the \u003ccode\u003epython_requires\u003c/code\u003e argument in \u003ccode\u003esetup.py\u003c/code\u003e.\nThere was a mistake releasing 4.4 as \u0026quot;3.5+ only\u0026quot;, which made it necessary to\nretag 4.4 as 4.6 as well.\u003c/p\u003e\n\u003cp\u003eNo functional changes compared to version 4.2.\u003c/p\u003e\n\u003ch2\u003eVersion 4.3 \u0026amp; 4.5 - released 2020-06-12\u003c/h2\u003e\n\u003cp\u003eVersion 4.3 and 4.5 are almost a re-tagged release of version 4.0. It is the\nlast to support Python 2.7. This is now made explicit in the \u003ccode\u003epython_requires\u003c/code\u003e\nargument in \u003ccode\u003esetup.py\u003c/code\u003e. Python 3.4 is not supported by this release. There was a\nmistake releasing 4.4 as \u0026quot;3.5+ only\u0026quot;, which made it necessary to retag 4.3 as\n4.5 as well.\u003c/p\u003e\n\u003cp\u003eTwo security fixes have also been backported, so 4.3 = 4.0 + these two fixes.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChoose blinding factor relatively prime to N. Thanks Christian Heimes for pointing this out.\u003c/li\u003e\n\u003cli\u003eReject cyphertexts (when decrypting) and signatures (when verifying) that have\nbeen modified by prepending zero bytes. This resolves CVE-2020-13757. Thanks\nCarnil for pointing this out.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.2 - released 2020-06-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRolled back the switch to Poetry, and reverted back to using Pipenv + setup.py\nfor dependency management. There apparently is an issue no-binary installs of\npackages build with Poetry. This fixes\n\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/148\"\u003e#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimited SHA3 support to those Python versions (3.6+) that support it natively.\nThe third-party library that adds support for this to Python 3.5 is a binary\npackage, and thus breaks the pure-Python nature of Python-RSA.\nThis should fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/147\"\u003e#147\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/sybrenstuvel/python-rsa/commit/fa3282a47457254385f2313c2eceaad4b06186a4\"\u003e\u003ccode\u003efa3282a\u003c/code\u003e\u003c/a\u003e Bumped version to 4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/a364e82caa4cb1fc51400a8c628fb48867fb4362\"\u003e\u003ccode\u003ea364e82\u003c/code\u003e\u003c/a\u003e Marked version 4.7 as released\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/539c54aada3922757099ce1911a28c46e8e81a10\"\u003e\u003ccode\u003e539c54a\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/170\"\u003e#170\u003c/a\u003e: mistake in examples of documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/b81e3171e9f870892e6b8a894db6d00ecd93f544\"\u003e\u003ccode\u003eb81e317\u003c/code\u003e\u003c/a\u003e Declare support for and test Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/06ec1ea1cc7be6034144bd06f07c35eb9d1b4953\"\u003e\u003ccode\u003e06ec1ea\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/162\"\u003e#162\u003c/a\u003e: Blinding uses slow algorithm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/341e5c4f939988bd472530441b6a02b625a30806\"\u003e\u003ccode\u003e341e5c4\u003c/code\u003e\u003c/a\u003e Directly raise \u003ccode\u003eDecryptionError\u003c/code\u003e when crypto length is bad\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/f254895b02f0cb106f9ccee6d8dc6af1a27f0bd1\"\u003e\u003ccode\u003ef254895\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ebytes.find()\u003c/code\u003e instead of \u003ccode\u003ebytes.index()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/240b0d8910299f970921391ea9737cb64ec09208\"\u003e\u003ccode\u003e240b0d8\u003c/code\u003e\u003c/a\u003e Add link to changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/f878c374086e672e7806fdd18401ec6b71cfa960\"\u003e\u003ccode\u003ef878c37\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/164\"\u003e#164\u003c/a\u003e: Add padding length check as described by PKCS#1 v1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/dae8ce0d85478e16f2368b2341632775313d41ed\"\u003e\u003ccode\u003edae8ce0\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e: CVE-2020-25658 - Bleichenbacher-style timing oracle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/compare/version-3.1.4...version-4.7\"\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=rsa\u0026package-manager=pip\u0026previous-version=3.1.4\u0026new-version=4.7)](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 \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/adrianstanca1/Buildproapp2/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/adrianstanca1/Buildproapp2/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianstanca1%2FBuildproapp2/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/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":"3744831011","node_id":"PR_kwDOQrTdT865rw7T","number":135,"state":"open","title":"Bump rsa from 4.9 to 4.9.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":"2025-12-18T20:59:18.000Z","updated_at":"2025-12-18T20:59:19.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":null,"ecosystem":"pip"},"body":"Bumps [rsa](https://github.com/sybrenstuvel/python-rsa) from 4.9 to 4.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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=rsa\u0026package-manager=pip\u0026previous-version=4.9\u0026new-version=4.9.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/a-schur/harmon/pull/135","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/a-schur%2Fharmon/issues/135","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/135/packages"},{"uuid":"3728635949","node_id":"PR_kwDOMftbFc641A6J","number":187,"state":"closed","title":"Bump the py-updates group across 1 directory with 78 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-12T04:36:49.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-15T04:23:43.000Z","updated_at":"2026-01-12T04:36:50.000Z","time_to_close":2419986,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":78,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.43.15","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.36.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.9","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.9","repository_url":"https://github.com/boto/botocore"},{"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":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.3","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.3.5","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"22.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.9","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.9","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.18","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.0","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.3","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.30.0","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.9.25","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.16"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.0","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.38.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 78 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.43.15` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.36.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.9` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.9` |\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| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.3` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.3.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `22.0.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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.2` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.9` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.9` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.18` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.0` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.9` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.30.0` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20250913` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.9.25` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.2.5` |\n| ruamel-yaml | `0.18.10` | `0.18.16` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.0` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.0` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.50.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.38.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n\n\nUpdates `awscli` from 1.40.17 to 1.43.15\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/7e0151487fe30379b8940f3f7438c9d36d8b0f26\"\u003e\u003ccode\u003e7e01514\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/72f90311e9cffa76ab1de14f261451127644e363\"\u003e\u003ccode\u003e72f9031\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3edc753acee17c4907518c3b519cb50ce8de0ee7\"\u003e\u003ccode\u003e3edc753\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/70bb5d4161f5aaf56b4b4250160a49b425147484\"\u003e\u003ccode\u003e70bb5d4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/7b40bb1b7eee75835a29888583bf10f9571a6bb1\"\u003e\u003ccode\u003e7b40bb1\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.14' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/acfdde6f0c0731f8b861788988f0a42504cbcdd9\"\u003e\u003ccode\u003eacfdde6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/74dbdfdc03068804f909da20b8b9e546a3fc3bc3\"\u003e\u003ccode\u003e74dbdfd\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/f1a04b95e91bec439313be76ac1a9461b5a8de49\"\u003e\u003ccode\u003ef1a04b9\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Implement upgrade debug mode\u0026quot; (\u003ca href=\"https://redirect.github.com/aws/aws-cli/issues/9913\"\u003e#9913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c21885e81e3af853e68ebb5561d0fbb65eddecb9\"\u003e\u003ccode\u003ec21885e\u003c/code\u003e\u003c/a\u003e Implement upgrade debug mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c3f45696e1bef325dec4bcacf633ad5e12e93ae1\"\u003e\u003ccode\u003ec3f4569\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.43.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.36.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.36.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTune partitioned sink_parquet cloud performance (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25687\"\u003e#25687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow creation of \u003ccode\u003eObject\u003c/code\u003e literal (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25690\"\u003e#25690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't collect schema in SQL union processing (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25675\"\u003e#25675\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon't invalidate node in cluster-with-columns (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25714\"\u003e#25714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove \u003ccode\u003eboto3\u003c/code\u003e extra from s3fs in dev requirements (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25667\"\u003e#25667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing type stubs for \u003ccode\u003ebin_slice\u003c/code\u003e, \u003ccode\u003ebin_head\u003c/code\u003e, and \u003ccode\u003ebin_tail\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25697\"\u003e#25697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBinary slice methods missing from Series and docs (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25683\"\u003e#25683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMix-up of variable_name/value_name in unpivot (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25685\"\u003e#25685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInvalid usage of \u003ccode\u003edrop_first\u003c/code\u003e in \u003ccode\u003eto_dummies\u003c/code\u003e when nulls present (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25435\"\u003e#25435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typos in Excel and Pandas migration guides (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25709\"\u003e#25709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u0026quot;right\u0026quot; to \u003ccode\u003ehow\u003c/code\u003e options in \u003ccode\u003ejoin()\u003c/code\u003e docstrings (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25678\"\u003e#25678\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove Object \u003ccode\u003elit\u003c/code\u003e fix earlier in the function (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25713\"\u003e#25713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused decimal file (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25701\"\u003e#25701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove \u003ccode\u003eboto3\u003c/code\u003e extra from s3fs in dev requirements (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25667\"\u003e#25667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade to latest version of \u003ccode\u003esqlparser-rs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate slab to version without RUSTSEC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25686\"\u003e#25686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25684\"\u003e#25684\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/AndreaBozzo\"\u003e\u003ccode\u003e@​AndreaBozzo\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Kevin-Patyk\"\u003e\u003ccode\u003e@​Kevin-Patyk\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/dsprenkels\"\u003e\u003ccode\u003e@​dsprenkels\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/jamesfricker\"\u003e\u003ccode\u003e@​jamesfricker\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/mcrumiller\"\u003e\u003ccode\u003e@​mcrumiller\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.36.0\u003c/h2\u003e\n\u003cp\u003e🏆 Highlights\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Extension types (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25322\"\u003e#25322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SQL support for the QUALIFY clause (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25652\"\u003e#25652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd bin.slice(), bin.head(), and bin.tail() methods (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25647\"\u003e#25647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd SQL syntax support for CROSS JOIN UNNEST(col) (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25623\"\u003e#25623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd separate env var to log tracked metrics (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25586\"\u003e#25586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpose fields for generating physical plan visualization data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25562\"\u003e#25562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pl.Object in pivot value (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25533\"\u003e#25533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor improvement for as_struct repr (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25529\"\u003e#25529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTemporal quantile in rolling context (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25479\"\u003e#25479\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/2a151c10fa76790711c2f75e6d012dd69c627ddd\"\u003e\u003ccode\u003e2a151c1\u003c/code\u003e\u003c/a\u003e Python Polars 1.36.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25715\"\u003e#25715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b394b2d15e502e46de0b817d4033b4cb5731a765\"\u003e\u003ccode\u003eb394b2d\u003c/code\u003e\u003c/a\u003e fix: Don't invalidate node in cluster-with-columns (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25714\"\u003e#25714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e5baff43073c8024ffa0e0fce0fc45be5f3cb635\"\u003e\u003ccode\u003ee5baff4\u003c/code\u003e\u003c/a\u003e refactor: Move Object \u003ccode\u003elit\u003c/code\u003e fix earlier in the function (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25713\"\u003e#25713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/ee79be36ef280975c332b5c51f13d14f10349bd0\"\u003e\u003ccode\u003eee79be3\u003c/code\u003e\u003c/a\u003e docs: Fix typos in Excel and Pandas migration guides (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25709\"\u003e#25709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/0150a1849d25c04ac35fe469228d358c9388b4c0\"\u003e\u003ccode\u003e0150a18\u003c/code\u003e\u003c/a\u003e chore: Remove unused decimal file (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25701\"\u003e#25701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/9dd724b647a77159477318077a03c9ece10e31b3\"\u003e\u003ccode\u003e9dd724b\u003c/code\u003e\u003c/a\u003e fix(python): Remove \u003ccode\u003eboto3\u003c/code\u003e extra from s3fs (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25667\"\u003e#25667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/d8cdf895f9b9a1110fa053400d3c16dd5b241063\"\u003e\u003ccode\u003ed8cdf89\u003c/code\u003e\u003c/a\u003e feat: Allow creation of \u003ccode\u003eObject\u003c/code\u003e literal (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25690\"\u003e#25690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/30699577be723eccedb30779f73076b7f22b6fd5\"\u003e\u003ccode\u003e3069957\u003c/code\u003e\u003c/a\u003e fix(python): Add missing type stubs for \u003ccode\u003ebin_slice\u003c/code\u003e, \u003ccode\u003ebin_head\u003c/code\u003e, and `bin_tai...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/729e5750e9d5005da953a83828366570209ba05f\"\u003e\u003ccode\u003e729e575\u003c/code\u003e\u003c/a\u003e chore: Upgrade to latest version of \u003ccode\u003esqlparser-rs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b83a2595b39deebafae13ba7d0b0fcc28f971e98\"\u003e\u003ccode\u003eb83a259\u003c/code\u003e\u003c/a\u003e chore: Update slab to version without RUSTSEC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25686\"\u003e#25686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.36.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.9\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/70183cf04d296effa96d26f65daea72f808d0b2b\"\u003e\u003ccode\u003e70183cf\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/02ef27f5aa6a77df183e48cba4814479b5b5d7bc\"\u003e\u003ccode\u003e02ef27f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b4821c1cb31d0eb4c6130e85dc4179789888a8e8\"\u003e\u003ccode\u003eb4821c1\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8c12c9dc72660013e2f52510eab3b3cd62d7ddeb\"\u003e\u003ccode\u003e8c12c9d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.8'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/39f484c1d95e4751a9953d44bad534ec7030c1a8\"\u003e\u003ccode\u003e39f484c\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.8' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/3c5c225507c6a753b1596d48c5e9f9586eb2729a\"\u003e\u003ccode\u003e3c5c225\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d8c15ca79b64aeed2f38123a2c20783721db1bdb\"\u003e\u003ccode\u003ed8c15ca\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e70c5a2b505631dc167de946d4717dcf7b422a67\"\u003e\u003ccode\u003ee70c5a2\u003c/code\u003e\u003c/a\u003e Use f-strings instead of string concatenation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4675\"\u003e#4675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2295d41097ef3fbdef837df4118ec85c04d48f6e\"\u003e\u003ccode\u003e2295d41\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.7'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f2bd57cd0c3e22a5ca7eefbfca358de247ec8b57\"\u003e\u003ccode\u003ef2bd57c\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.7' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.9\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fefef10ea7908e50bb9a7e5ec1969cc5d745d9d5\"\u003e\u003ccode\u003efefef10\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/2bdbadbfc0bbd216359c329f0ce082ef383b5b26\"\u003e\u003ccode\u003e2bdbadb\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fd387744345f7e56f7f06845031e73cd21b34ef9\"\u003e\u003ccode\u003efd38774\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/bd5f2d844a8ca5cad817820944df4f45184fa0ea\"\u003e\u003ccode\u003ebd5f2d8\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/517a891083b3fbf4040041ee42a82e67e67e8c0a\"\u003e\u003ccode\u003e517a891\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.8'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/02205a47fcd51a60ae453c1da4eefa8f509b824b\"\u003e\u003ccode\u003e02205a4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.8' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6290d04346193a26531d806bb6a8613a23d3dd35\"\u003e\u003ccode\u003e6290d04\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/e635637d039e79dadb6a78fdf78ffb995a179d65\"\u003e\u003ccode\u003ee635637\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/323d375948254b39e6fc94a68c1d7bb3a88c553a\"\u003e\u003ccode\u003e323d375\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/a9d520e8c7d365dde025c4b7a12d4e4ec4102e57\"\u003e\u003ccode\u003ea9d520e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.7'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.9\"\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 `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.3.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.5 (Nov 16, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.3.5 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.3.5 release is a patch release split between a number of maintenance\nupdates and bug fixes. This release supports Python versions 3.11-3.14.\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 10 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAaron Kollasch +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMatti Picus\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRafael Laboissière +\u003c/li\u003e\n\u003cli\u003eSayed Awad\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eWarren Weckesser\u003c/li\u003e\n\u003cli\u003eYasir Ashfaq +\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 16 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/29979\"\u003e#29979\u003c/a\u003e: MAINT: Prepare 2.3.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30026\"\u003e#30026\u003c/a\u003e: SIMD, BLD: Backport FPMATH mode on x86-32 and filter successor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30029\"\u003e#30029\u003c/a\u003e: MAINT: Backport write_release.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30041\"\u003e#30041\u003c/a\u003e: TYP: Various typing updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30059\"\u003e#30059\u003c/a\u003e: BUG: Fix np.strings.slice if stop=None or start and stop \u0026gt;= len...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30063\"\u003e#30063\u003c/a\u003e: BUG: Fix np.strings.slice if start \u0026gt; stop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30076\"\u003e#30076\u003c/a\u003e: BUG: avoid negating INT_MIN in PyArray_Round implementation (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30071\"\u003e#30071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30090\"\u003e#30090\u003c/a\u003e: BUG: Fix resize when it contains references (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/29970\"\u003e#29970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30129\"\u003e#30129\u003c/a\u003e: BLD: update scipy-openblas, use -Dpkg_config_path (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30049\"\u003e#30049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30130\"\u003e#30130\u003c/a\u003e: BUG: Avoid compilation error of wrapper file generated with SWIG...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30157\"\u003e#30157\u003c/a\u003e: BLD: use scipy-openblas 0.3.30.7 (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30132\"\u003e#30132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30158\"\u003e#30158\u003c/a\u003e: DOC: Remove nonexistent \u003ccode\u003eorder\u003c/code\u003e parameter docs of \u003ccode\u003ema.asanyarray\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30185\"\u003e#30185\u003c/a\u003e: BUG: Fix check of PyMem_Calloc return value. (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30176\"\u003e#30176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30217\"\u003e#30217\u003c/a\u003e: DOC: fix links for newly rebuilt numpy-tutorials site\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30218\"\u003e#30218\u003c/a\u003e: BUG: Fix build on s390x with clang (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30214\"\u003e#30214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30237\"\u003e#30237\u003c/a\u003e: ENH: Make FPE blas check a runtime check for all apple arm systems\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.4 (Oct 15,  2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.3.4 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.3.4 release is a patch release split between a number of maintenance\nupdates and bug fixes. This release supports Python versions 3.11-3.14. This\nrelease is based on Python 3.14.0 final.\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/numpy/numpy/commit/c3d60fc8393f3ca3306b8ce8b6453d43737e3d90\"\u003e\u003ccode\u003ec3d60fc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30238\"\u003e#30238\u003c/a\u003e from charris/prepare-2.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/11451fa35d49d8c809cdef87106417833bdacfbe\"\u003e\u003ccode\u003e11451fa\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.3.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/eab5bd47df62782edceccf4cf99112851f7a8975\"\u003e\u003ccode\u003eeab5bd4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30237\"\u003e#30237\u003c/a\u003e from charris/backport-30102\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7cea31aa6255994bcd17b3ee2f6dbf671eaa9598\"\u003e\u003ccode\u003e7cea31a\u003c/code\u003e\u003c/a\u003e Fixup merge of multiarraymodule.c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b8981736060011506e497c5bca24a75c5bddee39\"\u003e\u003ccode\u003eb898173\u003c/code\u003e\u003c/a\u003e Update numpy/_core/src/common/blas_utils.h\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/f755483d4858839044f159db7dacdf1818912393\"\u003e\u003ccode\u003ef755483\u003c/code\u003e\u003c/a\u003e Report FPE ignoring in matmul in \u003ccode\u003eshow_runtime()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/c47116f3858a2814222a7cd7b15ebc5eed9df4d0\"\u003e\u003ccode\u003ec47116f\u003c/code\u003e\u003c/a\u003e Move test to Python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/bd7b93f105ddb3b3f200ceb6fb4516e7e87f3a81\"\u003e\u003ccode\u003ebd7b93f\u003c/code\u003e\u003c/a\u003e ooops, needs to be a calloc of course.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/83a1517159a2e33d05113e3341afb1df83ba615d\"\u003e\u003ccode\u003e83a1517\u003c/code\u003e\u003c/a\u003e Guard for HAVE_CB...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/187","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/187","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/187/packages"},{"uuid":"3704597719","node_id":"PR_kwDOMftbFc63lcFZ","number":186,"state":"closed","title":"Bump the py-updates group across 1 directory with 77 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-15T04:19:04.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-08T04:28:42.000Z","updated_at":"2025-12-15T04:19:06.000Z","time_to_close":604222,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":77,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.43.10","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.35.2","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.4","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.4","repository_url":"https://github.com/boto/botocore"},{"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":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.3","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.3.5","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"22.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.4","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.4","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.12.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.18","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.0","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.3","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.8","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.29.2","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.15.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.9.25","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.7","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.16"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.5.2","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.38.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 77 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.43.10` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.35.2` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.4` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.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| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.3` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.3.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `22.0.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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.4` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.12.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.18` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.0` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.8` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.29.2` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20250913` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.15.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.0` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.9.25` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.7` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.2.5` |\n| ruamel-yaml | `0.18.10` | `0.18.16` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.5.2` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.0` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.50.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.38.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n\n\nUpdates `awscli` from 1.40.17 to 1.43.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3499274cba0231d38086cb4389f4fda3ca3cbf2c\"\u003e\u003ccode\u003e3499274\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.10'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/0641f4e15bcd81c6321cf8289e2ef988143b4f31\"\u003e\u003ccode\u003e0641f4e\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/0621f58add8d91f0069e813b173624f738991093\"\u003e\u003ccode\u003e0621f58\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/f2ee76ccc9c8bff9e079118923be05df483e0d01\"\u003e\u003ccode\u003ef2ee76c\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/69cf052063a23eb4172bc1ecb338922227336437\"\u003e\u003ccode\u003e69cf052\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.9' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/794d13709a2f6fd64231ae739177d8dc18e7bfb3\"\u003e\u003ccode\u003e794d137\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/90a22b9417f34b8399a3086798a1c3f55f0ae3b2\"\u003e\u003ccode\u003e90a22b9\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/ece1daabc883acbc7156caaeb5faf883e5a87166\"\u003e\u003ccode\u003eece1daa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.8'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/f4787fad94308cadbe8a41b78b509069d81dbeda\"\u003e\u003ccode\u003ef4787fa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.8' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/06b7bfebc5b604772f8bef8e7f958bb78916be18\"\u003e\u003ccode\u003e06b7bfe\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.8\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.43.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.35.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.35.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003edrop_nans()\u003c/code\u003e result when used in \u003ccode\u003egroup_by()\u003c/code\u003e / \u003ccode\u003eover()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/pull/25146\"\u003epola-rs/polars#25146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling \u003ccode\u003eNull\u003c/code\u003e dtype in \u003ccode\u003eApplyExpr\u003c/code\u003e on \u003ccode\u003egroup_by\u003c/code\u003e(\u003ca href=\"https://redirect.github.com/pola-rs/polars/pull/25077\"\u003epola-rs/polars#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix assertion panic on \u003ccode\u003egroup_by\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/pull/25179\"\u003epola-rs/polars#25179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Wide-table join performance regression (\u003ca href=\"https://redirect.github.com/pola-rs/polars/pull/25222\"\u003epola-rs/polars#25222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/coastalwhite\"\u003e\u003ccode\u003e@​coastalwhite\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.35.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon't recompute full rolling moment window when NaNs/nulls leave the window (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25078\"\u003e#25078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip filtering scan IR if no paths were filtered (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25037\"\u003e#25037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ipc stream read performance (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/24671\"\u003e#24671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport BYTE_ARRAY backed Decimals in Parquet (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25076\"\u003e#25076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eglimpse\u003c/code\u003e to return a \u003ccode\u003eDataFrame\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/24803\"\u003e#24803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eallow_empty\u003c/code\u003e flag to \u003ccode\u003eitem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25048\"\u003e#25048\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eSQL\u003c/code\u003e interface should use logical, not bitwise, behaviour for unary \u0026quot;NOT\u0026quot; operator (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25091\"\u003e#25091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic if scan predicate produces 0 length mask (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25089\"\u003e#25089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure SQL table alias resolution checks against CTE aliases on fallback (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25071\"\u003e#25071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePanic in \u003ccode\u003egroup_by_dynamic\u003c/code\u003e with \u003ccode\u003egroup_by\u003c/code\u003e and multiple chunks (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25075\"\u003e#25075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor improvement to internal \u003ccode\u003eis_pycapsule\u003c/code\u003e utility function (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25073\"\u003e#25073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic when using struct field as join key (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25059\"\u003e#25059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow broadcast in \u003ccode\u003egroup_by\u003c/code\u003e for \u003ccode\u003eApplyExpr\u003c/code\u003e and \u003ccode\u003eBinaryExpr\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25053\"\u003e#25053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix field metadata for nested categorical PyCapsule export (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25052\"\u003e#25052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock predicate pushdown when \u003ccode\u003egroup_by\u003c/code\u003e key values are changed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25032\"\u003e#25032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGroup-By aggregation problems caused by \u003ccode\u003eAmortSeries\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25043\"\u003e#25043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't push down predicates passed inserted cache nodes (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25042\"\u003e#25042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow for negative time in \u003ccode\u003egroup_by_dynamic\u003c/code\u003e iterator (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25041\"\u003e#25041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typo in public dataset URL (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable recursive CSPE for now (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange group length mismatch error to \u003ccode\u003eShapeError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25004\"\u003e#25004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate toolchain (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25007\"\u003e#25007\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/Kevin-Patyk\"\u003e\u003ccode\u003e@​Kevin-Patyk\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Liyixin95\"\u003e\u003ccode\u003e@​Liyixin95\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/coastalwhite\"\u003e\u003ccode\u003e@​coastalwhite\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/r-brink\"\u003e\u003ccode\u003e@​r-brink\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/stijnherfst\"\u003e\u003ccode\u003e@​stijnherfst\u003c/code\u003e\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/pola-rs/polars/commit/c5f0f25b2ed6498dd47d3ec619ef3a1a90c0788b\"\u003e\u003ccode\u003ec5f0f25\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/29dc1db9cc3d9c2209021dc423bcbff72958bb18\"\u003e\u003ccode\u003e29dc1db\u003c/code\u003e\u003c/a\u003e fix: Wide-table join performance regression (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25222\"\u003e#25222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/fbd57cdf2b82d5575205ef8aa14c0d96f29c002a\"\u003e\u003ccode\u003efbd57cd\u003c/code\u003e\u003c/a\u003e fix: Fix assertion panic on \u003ccode\u003egroup_by\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25179\"\u003e#25179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/8abe6ef5f4938f6bb2f010a24f7d361138c82895\"\u003e\u003ccode\u003e8abe6ef\u003c/code\u003e\u003c/a\u003e fix: Fix handling \u003ccode\u003eNull\u003c/code\u003e dtype in \u003ccode\u003eApplyExpr\u003c/code\u003e on \u003ccode\u003egroup_by\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/c19e4c07fc66776f1826a0251f118a2ad4bb3047\"\u003e\u003ccode\u003ec19e4c0\u003c/code\u003e\u003c/a\u003e fix: Invert \u003ccode\u003edrop_nans\u003c/code\u003e filtering in group-by context (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25146\"\u003e#25146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/a99ad3495d0b4bb71a956eb3ab5e23595df756db\"\u003e\u003ccode\u003ea99ad34\u003c/code\u003e\u003c/a\u003e fix: The \u003ccode\u003eSQL\u003c/code\u003e interface should use logical, not bitwise, behaviour for unary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/84a0feea2790c6d2ed5be2661409230c1ba9eb00\"\u003e\u003ccode\u003e84a0fee\u003c/code\u003e\u003c/a\u003e Python Polars 1.35.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25090\"\u003e#25090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b9e313641cd7546d4f29ed93dde0cd3b74e799c2\"\u003e\u003ccode\u003eb9e3136\u003c/code\u003e\u003c/a\u003e refactor(rust): Remove old join projection pushdown logic (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25088\"\u003e#25088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/7b423b6d6d8074826ef950c33a6931f78bc4d952\"\u003e\u003ccode\u003e7b423b6\u003c/code\u003e\u003c/a\u003e fix: Fix panic if scan predicate produces 0 length mask (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25089\"\u003e#25089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/ce396f450cc261c7b34bd7f00408fc9152eb6d35\"\u003e\u003ccode\u003ece396f4\u003c/code\u003e\u003c/a\u003e refactor: Disable recursive CSPE for now (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.35.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.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/87d85be3865d8f8de7df2188032fb5ebad5883a9\"\u003e\u003ccode\u003e87d85be\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.4'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2ed62e3c85f8331f532918f54828ed4e03813788\"\u003e\u003ccode\u003e2ed62e3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/7df80a3d6ae16b2c311732b8a67ad6c7ca9b0cd1\"\u003e\u003ccode\u003e7df80a3\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/347117552e90ab6fc8a3e6a459f0a00ec0ca0a48\"\u003e\u003ccode\u003e3471175\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.3'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dfb22ff6eccbd6a07ef68304cc36198e39260618\"\u003e\u003ccode\u003edfb22ff\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.3' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2e3d1258ad9cb30f38d3c54b1b5e847b83a2d13b\"\u003e\u003ccode\u003e2e3d125\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/04ebd3cbea961c39ea1fea5edfd24442d299eb1d\"\u003e\u003ccode\u003e04ebd3c\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/cc95ab6caa73634e01a03c82f310d002a5f3e71d\"\u003e\u003ccode\u003ecc95ab6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.2'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/743b8e411a11015a0a0ee584cd0f3b947687a666\"\u003e\u003ccode\u003e743b8e4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.2' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8f7ba800ea3e2c252b2d9ed4abd4f00309a79511\"\u003e\u003ccode\u003e8f7ba80\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05bdcecb8de077dc0c3551c700243f46f7672848\"\u003e\u003ccode\u003e05bdcec\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.4'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b04193bd48846f03294d06143304576139509982\"\u003e\u003ccode\u003eb04193b\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6d8692f79e641d6529458277bb20c504c17c3eca\"\u003e\u003ccode\u003e6d8692f\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/4e2bde0cb6044935ec0c0bcf022cd32b9c68289e\"\u003e\u003ccode\u003e4e2bde0\u003c/code\u003e\u003c/a\u003e Upgrade awscrt to 0.29.2 (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3608\"\u003e#3608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/c57744ce74370df9ae48d68ce96c213dce94563f\"\u003e\u003ccode\u003ec57744c\u003c/code\u003e\u003c/a\u003e Add retries to handle IAM eventual consistency issues (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3600\"\u003e#3600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b71ae76eee8dd1b084d038b5113bd29b8720f708\"\u003e\u003ccode\u003eb71ae76\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.3'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/220c0b020df8c80078b44fe1227c3bc7b7f24004\"\u003e\u003ccode\u003e220c0b0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.3' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/ac07545e42460b00e7b624161b422b8b7ce4eeda\"\u003e\u003ccode\u003eac07545\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/68fc097d76eec12c4e64c0478e99f76bdee90226\"\u003e\u003ccode\u003e68fc097\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b2877967b7e851d639e7bfa56ad2c6d9ea35b4ad\"\u003e\u003ccode\u003eb287796\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.2'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.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 `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.3.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.5 (Nov 16, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.3.5 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.3.5 release is a patch release split between a number of maintenance\nupdates and bug fixes. This release supports Python versions 3.11-3.14.\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 10 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAaron Kollasch +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMatti Picus\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRafael Laboissière +\u003c/li\u003e\n\u003cli\u003eSayed Awad\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eWarren Weckesser\u003c/li\u003e\n\u003cli\u003eYasir Ashfaq +\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 16 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/29979\"\u003e#29979\u003c/a\u003e: MAINT: Prepare 2.3.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30026\"\u003e#30026\u003c/a\u003e: SIMD, BLD: Backport FPMATH mode on x86-32 and filter successor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30029\"\u003e#30029\u003c/a\u003e: MAINT: Backport write_release.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30041\"\u003e#30041\u003c/a\u003e: TYP: Various typing updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30059\"\u003e#30059\u003c/a\u003e: BUG: Fix np.strings.slice if stop=None or start and stop \u0026gt;= len...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30063\"\u003e#30063\u003c/a\u003e: BUG: Fix np.strings.slice if start \u0026gt; stop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30076\"\u003e#30076\u003c/a\u003e: BUG: avoid negating INT_MIN in PyArray_Round implementation (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30071\"\u003e#30071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30090\"\u003e#30090\u003c/a\u003e: BUG: Fix resize when it contains references (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/29970\"\u003e#29970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30129\"\u003e#30129\u003c/a\u003e: BLD: update scipy-openblas, use -Dpkg_config_path (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30049\"\u003e#30049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30130\"\u003e#30130\u003c/a\u003e: BUG: Avoid compilation error of wrapper file generated with SWIG...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30157\"\u003e#30157\u003c/a\u003e: BLD: use scipy-openblas 0.3.30.7 (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30132\"\u003e#30132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30158\"\u003e#30158\u003c/a\u003e: DOC: Remove nonexistent \u003ccode\u003eorder\u003c/code\u003e parameter docs of \u003ccode\u003ema.asanyarray\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30185\"\u003e#30185\u003c/a\u003e: BUG: Fix check of PyMem_Calloc return value. (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30176\"\u003e#30176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30217\"\u003e#30217\u003c/a\u003e: DOC: fix links for newly rebuilt numpy-tutorials site\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30218\"\u003e#30218\u003c/a\u003e: BUG: Fix build on s390x with clang (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30214\"\u003e#30214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30237\"\u003e#30237\u003c/a\u003e: ENH: Make FPE blas check a runtime check for all apple arm systems\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.4 (Oct 15,  2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.3.4 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.3.4 release is a patch release split between a number of maintenance\nupdates and bug fixes. This release supports Python versions 3.11-3.14. This\nrelease is based on Python 3.14.0 final.\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/numpy/numpy/commit/c3d60fc8393f3ca3306b8ce8b6453d43737e3d90\"\u003e\u003ccode\u003ec3d60fc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30238\"\u003e#30238\u003c/a\u003e from charris/prepare-2.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/11451fa35d49d8c809cdef87106417833bdacfbe\"\u003e\u003ccode\u003e11451fa\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.3.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/eab5bd47df62782edceccf4cf99112851f7a8975\"\u003e\u003ccode\u003eeab5bd4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30237\"\u003e#30237\u003c/a\u003e from charris/backport-30102\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7cea31aa6255994bcd17b3ee2f6dbf671eaa9598\"\u003e\u003ccode\u003e7cea31a\u003c/code\u003e\u003c/a\u003e Fixup merge of multiarraymodule.c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b8981736060011506e497c5bca24a75c5bddee39\"\u003e\u003ccode\u003eb898173\u003c/code\u003e\u003c/a\u003e Update numpy/_core/src/common/blas_utils.h\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/comm...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/186","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/186","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/186/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":"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"}],"issue_packages":[{"old_version":"\u003e=4.1","new_version":"\u003e=4.9.1","update_type":null,"path":null,"pr_created_at":"2026-05-04T04:03:59.000Z","version_change":"\u003e=4.1 → \u003e=4.9.1","issue":{"uuid":"4373940780","node_id":"PR_kwDOBxGlOM7X3z_k","number":9087,"state":"open","title":"Update rsa requirement from \u003e=4.1 to \u003e=4.9.1","user":"dependabot[bot]","labels":["t:maintenance"],"assignees":["pcrespov","sanderegg"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-04T04:03:59.000Z","updated_at":"2026-05-04T04:04:59.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"rsa","old_version":"\u003e=4.1","new_version":"\u003e=4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [rsa](https://github.com/sybrenstuvel/python-rsa) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.9 - release 2022-07-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove debug logging from \u003ccode\u003ersa/key.py\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/194\"\u003e#194\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove overlapping slots in \u003ccode\u003ePrivateKey\u003c/code\u003e and \u003ccode\u003ePublicKey\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/189\"\u003e#189\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDo not include CHANGELOG/LICENSE/README.md in wheel\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/191\"\u003e#191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed Key Generation Unittest: Public and Private keys are assigned the wrong way around\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/188\"\u003e#188\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.8 - released 2021-11-24\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://python-poetry.org/\"\u003ePoetry\u003c/a\u003e for dependency and release management.\u003c/li\u003e\n\u003cli\u003eCompatibility with Python 3.10.\u003c/li\u003e\n\u003cli\u003eChain exceptions using \u003ccode\u003eraise new_exception from old_exception\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded marker file for PEP 561. This will allow type checking tools in dependent projects\nto use type annotations from Python-RSA\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUse the Chinese Remainder Theorem when decrypting with a private key. This\nmakes decryption 2-4x faster\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/163\"\u003e#163\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7.2 - released 2021-02-24\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix picking/unpickling issue introduced in 4.7\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7.1 - released 2021-02-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix threading issue introduced in 4.7\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7 - released 2021-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e:\nCVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption\ncode\u003c/li\u003e\n\u003cli\u003eAdd padding length check as described by PKCS#1 v1.5 (Fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/ITISFoundation/osparc-simcore/pull/9087","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITISFoundation%2Fosparc-simcore/issues/9087","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9087/packages"}},{"old_version":"4.8","new_version":"4.9.1","update_type":null,"path":"/tests/docker","pr_created_at":"2026-03-17T02:16:58.000Z","version_change":"4.8 → 4.9.1","issue":{"uuid":"4085808469","node_id":"PR_kwDONj7AVM7LFtUk","number":344,"state":"open","title":"chore(deps): bump rsa from 4.8 to 4.9.1 in /tests/docker","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-17T02:16:58.000Z","updated_at":"2026-03-26T09:43:46.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"rsa","old_version":"4.8","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/tests/docker","ecosystem":"pip"},"body":"Bumps [rsa](https://github.com/sybrenstuvel/python-rsa) from 4.8 to 4.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.9 - release 2022-07-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove debug logging from \u003ccode\u003ersa/key.py\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/194\"\u003e#194\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove overlapping slots in \u003ccode\u003ePrivateKey\u003c/code\u003e and \u003ccode\u003ePublicKey\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/189\"\u003e#189\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDo not include CHANGELOG/LICENSE/README.md in wheel\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/191\"\u003e#191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed Key Generation Unittest: Public and Private keys are assigned the wrong way around\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/188\"\u003e#188\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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=rsa\u0026package-manager=pip\u0026previous-version=4.8\u0026new-version=4.9.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/Netcracker/pgskipper-operator/pull/344","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netcracker%2Fpgskipper-operator/issues/344","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/344/packages"}},{"old_version":"4.9","new_version":"4.9.1","update_type":null,"path":null,"pr_created_at":"2026-02-01T09:27:06.000Z","version_change":"4.9 → 4.9.1","issue":{"uuid":"3881651866","node_id":"PR_kwDOAVOy2c7Ashnb","number":657,"state":"closed","title":"Bump the pip group across 1 directory with 38 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-01T09:23:54.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T09:27:06.000Z","updated_at":"2026-03-01T09:23:55.000Z","time_to_close":2419008,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":38,"packages":[{"name":"beautifulsoup4","old_version":"4.13.3","new_version":"4.14.3"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"bokeh","old_version":"3.6.2","new_version":"3.8.2","repository_url":"https://github.com/bokeh/bokeh"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cryptography","old_version":"44.0.1","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"markdown","old_version":"3.7","new_version":"3.10.1","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"networkx","old_version":"3.4.2","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.2.3","new_version":"2.4.2","repository_url":"https://github.com/numpy/numpy"},{"name":"pillow","old_version":"11.1.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"plotly","old_version":"5.24.1","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycurl","old_version":"7.45.4","new_version":"7.45.7","repository_url":"https://github.com/pycurl/pycurl"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyopenssl","old_version":"25.0.0","new_version":"25.3.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"scipy","old_version":"1.15.2","new_version":"1.17.0","repository_url":"https://github.com/scipy/scipy"},{"name":"setuptools","old_version":"75.8.2","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"wordcloud","old_version":"1.9.4","new_version":"1.9.6","repository_url":"https://github.com/amueller/word_cloud"},{"name":"ipython","old_version":"8.33.0","new_version":"9.9.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.5","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"pandas","old_version":"2.2.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pymongo","old_version":"4.11.1","new_version":"4.16.0","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"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":"scikit-learn","old_version":"1.6.1","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"statsmodels","old_version":"0.14.4","new_version":"0.14.6","repository_url":"https://github.com/statsmodels/statsmodels"},{"name":"tornado","old_version":"6.4.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"coverage","old_version":"7.6.12","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pytest","old_version":"8.3.4","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.0.0","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-recording","old_version":"0.13.2","new_version":"0.13.4","repository_url":"https://github.com/kiwicom/pytest-recording"},{"name":"ruff","old_version":"0.9.9","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"vcrpy","old_version":"7.0.0","new_version":"8.1.1","repository_url":"https://github.com/kevin1024/vcrpy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 38 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.3` | `4.14.3` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [bokeh](https://github.com/bokeh/bokeh) | `3.6.2` | `3.8.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.1.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.1` | `46.0.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.1` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.3` | `2.4.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.1.0` | `12.1.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `5.24.1` | `6.5.2` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycurl](https://github.com/pycurl/pycurl) | `7.45.4` | `7.45.7` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `25.0.0` | `25.3.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.17.0` |\n| [setuptools](https://github.com/pypa/setuptools) | `75.8.2` | `80.10.2` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [wordcloud](https://github.com/amueller/word_cloud) | `1.9.4` | `1.9.6` |\n| [ipython](https://github.com/ipython/ipython) | `8.33.0` | `9.9.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.5` | `8.1.8` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `3.0.0` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.11.1` | `4.16.0` |\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| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.8.0` |\n| [statsmodels](https://github.com/statsmodels/statsmodels) | `0.14.4` | `0.14.6` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.4.2` | `6.5.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.6.12` | `7.13.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.4` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.0.0` | `7.0.0` |\n| [pytest-recording](https://github.com/kiwicom/pytest-recording) | `0.13.2` | `0.13.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.9.9` | `0.14.14` |\n| [vcrpy](https://github.com/kevin1024/vcrpy) | `7.0.0` | `8.1.1` |\n\n\nUpdates `beautifulsoup4` from 4.13.3 to 4.14.3\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bokeh` from 3.6.2 to 3.8.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bokeh/bokeh/blob/3.8.2/docs/CHANGELOG\"\u003ebokeh's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2026-01-06    3.8.2:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ebugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14768\"\u003e#14768\u003c/a\u003e [component: server] Incomplete Origin Validation in WebSockets in Bokeh server applications\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etasks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14767\"\u003e#14767\u003c/a\u003e Backports for 3.8.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025-11-07    3.8.1:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ebugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14618\"\u003e#14618\u003c/a\u003e [component: docs] Local documentation build fails with \u003ccode\u003eExtension error (sphinxext.opengraph)\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14626\"\u003e#14626\u003c/a\u003e [component: docs] Local documentation fails on Windows because of missing svg icons\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14651\"\u003e#14651\u003c/a\u003e [component: bokehjs] HoverTool parameter @$name for stacked bar chart not working in version 3.8.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etasks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14704\"\u003e#14704\u003c/a\u003e Backports for 3.8.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025-08-29      3.8:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ebugfixes:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/12430\"\u003e#12430\u003c/a\u003e [component: bokehjs] [BUG] Step glyphs do not support linked brushing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/12994\"\u003e#12994\u003c/a\u003e [component: bokehjs] [BUG] Patch does not output under certain conditions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/13616\"\u003e#13616\u003c/a\u003e [component: bokehjs] [BUG] DateRangePicker value does not reflect value in browser when selection is aborted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14334\"\u003e#14334\u003c/a\u003e js_on_change not firing when range is updated in range tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14352\"\u003e#14352\u003c/a\u003e [component: bokehjs] Log Axis and Range1d \u0026lt; 1 failing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14383\"\u003e#14383\u003c/a\u003e [component: bokehjs] \u003ccode\u003eSerializationError: circular reference\u003c/code\u003e When Passing List of Renderers to CustomJS Callbacks, but not when passing renderers sperately.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14396\"\u003e#14396\u003c/a\u003e [component: examples] Remove context from time of day in span example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14399\"\u003e#14399\u003c/a\u003e Bad typings for \u003ccode\u003elist_attr_splat\u003c/code\u003e (e.g. \u003ccode\u003ePlot.axis\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14413\"\u003e#14413\u003c/a\u003e [component: bokehjs] \u003ccode\u003eValueRef\u003c/code\u003e \u003ccode\u003eformatter\u003c/code\u003e does not handle datetime nullable well\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14420\"\u003e#14420\u003c/a\u003e [component: bokehjs] Enhance performance of WebGL multi_marker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14422\"\u003e#14422\u003c/a\u003e [component: bokehjs] Legend renderer not correctly positioned when saved with SaveTool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14424\"\u003e#14424\u003c/a\u003e [component: bokehjs] Patches with no data does not show plot with Bokeh 3.7+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14458\"\u003e#14458\u003c/a\u003e [component: bokehjs] Removing and re-adding DOM nodes causes React problems\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14461\"\u003e#14461\u003c/a\u003e [component: tests] The regression test for issue \u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14207\"\u003e#14207\u003c/a\u003e is unreliable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14468\"\u003e#14468\u003c/a\u003e [component: docs] Try on CodePen link does not work in documentation /docs/user_guide/advanced/bokehjs.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14469\"\u003e#14469\u003c/a\u003e [component: bokehjs] Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14476\"\u003e#14476\u003c/a\u003e Improve handling of pd.NA in Property.matches\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14497\"\u003e#14497\u003c/a\u003e mypy 1.15.0 fails in CI but not locally\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14499\"\u003e#14499\u003c/a\u003e [component: docs] IndexError on importing bokeh.sphinxext.bokeh_plot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14520\"\u003e#14520\u003c/a\u003e [component: bokehjs] BokehJS complains about categorical factors for the BoxAnnotation widget\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14536\"\u003e#14536\u003c/a\u003e Flex layouts need to apply \u003ccode\u003emin_width\u003c/code\u003e and \u003ccode\u003emin_height\u003c/code\u003e selectively\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14540\"\u003e#14540\u003c/a\u003e [component: tests] Tests are failing on Windows and Python 3.10 after PR \u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14531\"\u003e#14531\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14541\"\u003e#14541\u003c/a\u003e New SVG icons have inconsistent line widths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14554\"\u003e#14554\u003c/a\u003e Add support for scalar uint32 color input.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14565\"\u003e#14565\u003c/a\u003e [component: bokehjs] DataTable source update broken\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14574\"\u003e#14574\u003c/a\u003e [component: build] grammar build script failing with whitespace in path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14597\"\u003e#14597\u003c/a\u003e [component: bokehjs] \u003ccode\u003edocument_ready\u003c/code\u003e even trigger twice with Bokeh 3.4.0.dev4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14602\"\u003e#14602\u003c/a\u003e [component: bokehjs] Layoutable components in side panels don't appear in exported images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14620\"\u003e#14620\u003c/a\u003e Re-connect race condition on page reload\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/bokeh/bokeh/commit/e5ce879c388a990e2977d126be14db5f642cf540\"\u003e\u003ccode\u003ee5ce879\u003c/code\u003e\u003c/a\u003e Deployment updates for release 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/2b3ee1081a7622d49daefea3214f1c6b07ad602c\"\u003e\u003ccode\u003e2b3ee10\u003c/code\u003e\u003c/a\u003e Don't validate npm credentials due to OICD limitations in npm (\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14769\"\u003e#14769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/756e3aef85e95330c49f997d6936bf0bd522393e\"\u003e\u003ccode\u003e756e3ae\u003c/code\u003e\u003c/a\u003e Migrate from NPM tokens to trusted providers for publishing in CI (\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14766\"\u003e#14766\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/2f225a1dbbc8ae74425b4e5acedf56aedc3f9d1d\"\u003e\u003ccode\u003e2f225a1\u003c/code\u003e\u003c/a\u003e Update dependencies in build environment (\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14758\"\u003e#14758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/69d197c318da7dd1a67d7f2a101f21fcdd0065f0\"\u003e\u003ccode\u003e69d197c\u003c/code\u003e\u003c/a\u003e update switcher.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/d915c8b9f42c67a90ac52f4a8d21be5e14e1e0af\"\u003e\u003ccode\u003ed915c8b\u003c/code\u003e\u003c/a\u003e update to latest ruff (\u003ca href=\"https://redirect.github.com/bokeh/bokeh/issues/14661\"\u003e#14661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/5f9f7b66bdd09cfac086da212d134a7654dfdab2\"\u003e\u003ccode\u003e5f9f7b6\u003c/code\u003e\u003c/a\u003e update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/cedd113b0e271b439dce768671685cf5f861812e\"\u003e\u003ccode\u003ecedd113\u003c/code\u003e\u003c/a\u003e handle wildcard host with port correctly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/a961ab7aad2a7d5d0350e861368e3d4294732caa\"\u003e\u003ccode\u003ea961ab7\u003c/code\u003e\u003c/a\u003e small CI fixes for advisory fork merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bokeh/bokeh/commit/d62939a6f9515d86010cf564ef6e256b62636725\"\u003e\u003ccode\u003ed62939a\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/bokeh/bokeh/compare/3.6.2...3.8.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 44.0.1 to 46.0.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.1...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.26.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/releases\"\u003ejsonschema's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.26.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1400\"\u003epython-jsonschema/jsonschema#1400\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1405\"\u003epython-jsonschema/jsonschema#1405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 6.5.0 to 6.6.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1406\"\u003epython-jsonschema/jsonschema#1406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1407\"\u003epython-jsonschema/jsonschema#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1413\"\u003epython-jsonschema/jsonschema#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 6.6.0 to 6.6.1 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/python-jsonschema/jsonschema/pull/1412\"\u003epython-jsonschema/jsonschema#1412\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1410\"\u003epython-jsonschema/jsonschema#1410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.3.2 to 2.3.3 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/python-jsonschema/jsonschema/pull/1409\"\u003epython-jsonschema/jsonschema#1409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1411\"\u003epython-jsonschema/jsonschema#1411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003evalidators: avoid \u003ccode\u003eurllib.request\u003c/code\u003e at import-time by \u003ca href=\"https://github.com/gudnimg\"\u003e\u003ccode\u003e@​gudnimg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1416\"\u003epython-jsonschema/jsonschema#1416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 6.6.1 to 6.8.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1417\"\u003epython-jsonschema/jsonschema#1417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.3.3 to 2.3.4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1418\"\u003epython-jsonschema/jsonschema#1418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1415\"\u003epython-jsonschema/jsonschema#1415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.3.4 to 2.4.1 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/python-jsonschema/jsonschema/pull/1419\"\u003epython-jsonschema/jsonschema#1419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump github/codeql-action from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1420\"\u003epython-jsonschema/jsonschema#1420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 6.8.0 to 7.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1421\"\u003epython-jsonschema/jsonschema#1421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1424\"\u003epython-jsonschema/jsonschema#1424\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.0 to 7.1.1 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/python-jsonschema/jsonschema/pull/1423\"\u003epython-jsonschema/jsonschema#1423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1425\"\u003epython-jsonschema/jsonschema#1425\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1429\"\u003epython-jsonschema/jsonschema#1429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1431\"\u003epython-jsonschema/jsonschema#1431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.4.1 to 2.4.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1432\"\u003epython-jsonschema/jsonschema#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.1 to 7.1.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1430\"\u003epython-jsonschema/jsonschema#1430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1434\"\u003epython-jsonschema/jsonschema#1434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.2 to 7.1.4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1435\"\u003epython-jsonschema/jsonschema#1435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1436\"\u003epython-jsonschema/jsonschema#1436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1437\"\u003epython-jsonschema/jsonschema#1437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.4.2 to 2.5.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1438\"\u003epython-jsonschema/jsonschema#1438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1439\"\u003epython-jsonschema/jsonschema#1439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument \u003ccode\u003euuid\u003c/code\u003e format by \u003ca href=\"https://github.com/sim642\"\u003e\u003ccode\u003e@​sim642\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1440\"\u003epython-jsonschema/jsonschema#1440\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1441\"\u003epython-jsonschema/jsonschema#1441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.4 to 7.1.6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1442\"\u003epython-jsonschema/jsonschema#1442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1443\"\u003epython-jsonschema/jsonschema#1443\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/gudnimg\"\u003e\u003ccode\u003e@​gudnimg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1416\"\u003epython-jsonschema/jsonschema#1416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sim642\"\u003e\u003ccode\u003e@​sim642\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1440\"\u003epython-jsonschema/jsonschema#1440\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.1...v4.26.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.1...v4.26.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1396\"\u003epython-jsonschema/jsonschema#1396\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev4.26.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDecrease import time by delaying importing of \u003ccode\u003eurllib.request\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1416\"\u003e#1416\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.25.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix an incorrect required argument in the \u003ccode\u003eValidator\u003c/code\u003e protocol's type annotations (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.25.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra via the MIT-licensed \u003ccode\u003erfc3987-syntax\u003c/code\u003e.\nThey were alread supported by the \u003ccode\u003eformat\u003c/code\u003e extra. (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1388\"\u003e#1388\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.24.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eProperly escape segments in \u003ccode\u003eValidationError.json_path\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/139\"\u003e#139\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.24.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix improper handling of \u003ccode\u003eunevaluatedProperties\u003c/code\u003e in the presence of \u003ccode\u003eadditionalProperties\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1351\"\u003e#1351\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.8 has been dropped, as it is end-of-life.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a7277432b0f7bcd0551f6e589d30457017125df4\"\u003e\u003ccode\u003ea727743\u003c/code\u003e\u003c/a\u003e Add a changelog entry for 4.26.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6d28c13efbbd6cf136143fdbb18f79d4476091f6\"\u003e\u003ccode\u003e6d28c13\u003c/code\u003e\u003c/a\u003e Update the lockfile.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/739499edc33c007ff62180c9fef61dbf5480bb7b\"\u003e\u003ccode\u003e739499e\u003c/code\u003e\u003c/a\u003e Update pre-commit hooks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/cb2d77980713577f65cc7e7c7c115932206393fd\"\u003e\u003ccode\u003ecb2d779\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1443\"\u003e#1443\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/e6bbbb7c5bcdb32a654572d17bfce264aefd1f9d\"\u003e\u003ccode\u003ee6bbbb7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/d56037a88faac4881214c6674a785b4abd428617\"\u003e\u003ccode\u003ed56037a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1442\"\u003e#1442\u003c/a\u003e from python-jsonschema/dependabot/github_actions/ast...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/e54ce13fb590a5c17fb702431598a382de6e68f9\"\u003e\u003ccode\u003ee54ce13\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 7.1.4 to 7.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1f7c9fbd01d9c2f8ddd98065324062f7e122dbe1\"\u003e\u003ccode\u003e1f7c9fb\u003c/code\u003e\u003c/a\u003e Partially update docs requirements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/241aec982bc8c867f276779faf20d49d9774532f\"\u003e\u003ccode\u003e241aec9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1441\"\u003e#1441\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/2818efb4fa446ed4fa7815b4e09a7b4b7c633852\"\u003e\u003ccode\u003e2818efb\u003c/code\u003e\u003c/a\u003e Apache-2.0 -\u0026gt; nongpl\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.26.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.7 to 3.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.9.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.8.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed comment parsing in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed declarations in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed HTML tag \u003ccode\u003e\u0026lt;foo\u003c/code\u003e and Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.8.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure incomplete markup declaration in raw HTML doesn't crash parser (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1534\"\u003e#1534\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed dropped content in \u003ccode\u003emd_in_html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1526\"\u003e#1526\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed HTML handling corner case that prevented some content from not being rendered (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1528\"\u003e#1528\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.8.2] - 2025-06-19\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed comment parsing in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed declarations in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed HTML tag \u003ccode\u003e\u0026lt;foo\u003c/code\u003e and Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.8.1] - 2025-06-18\u003c/h2\u003e\n\u003ch3\u003eFixed\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/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/961856ceb30623b929d8b7abdf5ed7074db7184c\"\u003e\u003ccode\u003e961856c\u003c/code\u003e\u003c/a\u003e Update link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/2b49115b1002142afbd84b3002f13c0e98a0f487\"\u003e\u003ccode\u003e2b49115\u003c/code\u003e\u003c/a\u003e Ensure nested elements inside inline comments are properly unescaped.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/22e89c1fc346f72218a10e392a0c3b4731912522\"\u003e\u003ccode\u003e22e89c1\u003c/code\u003e\u003c/a\u003e Bump version to 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c138aea5139a6aceae05bb957e866d9ce7577b94\"\u003e\u003ccode\u003ec138aea\u003c/code\u003e\u003c/a\u003e + PY314 - PY39\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.7...3.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markupsafe` from 3.0.2 to 3.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/releases\"\u003emarkupsafe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.3\u003c/h2\u003e\n\u003cp\u003eThis is the MarkupSafe 3.0.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/MarkupSafe/3.0.3/\"\u003ehttps://pypi.org/project/MarkupSafe/3.0.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\"\u003ehttps://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/markupsafe/milestone/15?closed=1\"\u003ehttps://github.com/pallets/markupsafe/milestone/15?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/487\"\u003e#487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialization PEP 489 for the C extension. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/494\"\u003e#494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/485\"\u003e#485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/503\"\u003e#503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/505\"\u003e#505\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/blob/main/CHANGES.rst\"\u003emarkupsafe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.3\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-27\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e.\n:issue:\u003ccode\u003e487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialisation (:pep:\u003ccode\u003e489\u003c/code\u003e) for the C extension.\n:issue:\u003ccode\u003e494\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. :issue:\u003ccode\u003e485\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. :issue:\u003ccode\u003e503\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. :issue:\u003ccode\u003e505\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/297fc8e356e6836a62087949245d09a28e9f1b13\"\u003e\u003ccode\u003e297fc8e\u003c/code\u003e\u003c/a\u003e release version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/7e4e6ce249107c5f27fa6fe890e29da7a8dc8f0c\"\u003e\u003ccode\u003e7e4e6ce\u003c/code\u003e\u003c/a\u003e Free-threading: run with pytest-run-paralell (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/507\"\u003e#507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/6100b9c0d466495a08d55b33cb172d7b5d8e9aa1\"\u003e\u003ccode\u003e6100b9c\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/506\"\u003e#506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/c9d5ecfc7eec6f611b19cdc8e1cde1aaa65cb8eb\"\u003e\u003ccode\u003ec9d5ecf\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/2f9b33753052e7c6df1464a7c900787d04ae9daf\"\u003e\u003ccode\u003e2f9b337\u003c/code\u003e\u003c/a\u003e tox for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/78d951a9549dee9fc901c55fc79a74a5f01e96fc\"\u003e\u003ccode\u003e78d951a\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/bb6744e392e79611b110c5ba022238eb1b855cc2\"\u003e\u003ccode\u003ebb6744e\u003c/code\u003e\u003c/a\u003e add entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/65c4134ab16a3faccbcac2cba90da0db2b799542\"\u003e\u003ccode\u003e65c4134\u003c/code\u003e\u003c/a\u003e upgrade cibuildwheel, add \u003ccode\u003ecp314\u003c/code\u003e wheels and test on CPython 3.14 (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/504\"\u003e#504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/3a9bd88b84c9edba8b922bb12b84a59feed98788\"\u003e\u003ccode\u003e3a9bd88\u003c/code\u003e\u003c/a\u003e add cp314 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/aafe44d87bd7974bc82af8c4010dea9938441edf\"\u003e\u003ccode\u003eaafe44d\u003c/code\u003e\u003c/a\u003e remove slsa provenance (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/markupsafe/compare/3.0.2...3.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `networkx` from 3.4.2 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/networkx/networkx/releases\"\u003enetworkx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNetworkX 3.6.1\u003c/h2\u003e\n\u003ch1\u003enetworkx 3.6.1\u003c/h1\u003e\n\u003cp\u003eWe're happy to announce the release of networkx 3.6.1!\u003c/p\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd spectral bipartition community finding and greedy bipartition using node swaps (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8347\"\u003e#8347\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNodelists for \u003ccode\u003efrom_biadjacency_matrix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/7993\"\u003e#7993\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd spectral bipartition community finding and greedy bipartition using node swaps (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8347\"\u003e#8347\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix draw_networkx_nodes with list node_shape and add regression test (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8363\"\u003e#8363\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: allow graph subclasses to have additional arguments (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8369\"\u003e#8369\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDOC: Improve benchmarking readme (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8358\"\u003e#8358\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: More details re: RC releases in the release process devdocs (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8346\"\u003e#8346\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: clarify difference between G.nodes/G.nodes() and G.edges/G.edges() in tutorial (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8300\"\u003e#8300\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: Add blurb to contributor guide about drawing tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8370\"\u003e#8370\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDOC: Fix underline lens in docstrings (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8371\"\u003e#8371\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRolling back shortest paths links (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8373\"\u003e#8373\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: Replace string literal with comment (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8359\"\u003e#8359\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the actions group (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8360\"\u003e#8360\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003epin python 3.14 to be version 3.14.0 until dataclasses are fixed (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8365\"\u003e#8365\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBlocklist Python 3.14.1 (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8372\"\u003e#8372\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTST: add tests for unsupported graph types in MST algorithms (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8353\"\u003e#8353\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTST: clean up isomorphism tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/pull/8364\"\u003e#8364\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003e10 authors added to this release (alphabetically):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Aka2210\"\u003e\u003ccode\u003e@​Aka2210\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jfinkels\"\u003e\u003ccode\u003e@​jfinkels\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NaorTIRAM\"\u003e\u003ccode\u003e@​NaorTIRAM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAditi Juneja (\u003ca href=\"https://github.com/Schefflera-Arboricola\"\u003e\u003ccode\u003e@​Schefflera-Arboricola\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlejandro Candioti (\u003ca href=\"https://github.com/amcandio\"\u003e\u003ccode\u003e@​amcandio\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColman Bouton (\u003ca href=\"https://github.com/LorentzFactor\"\u003e\u003ccode\u003e@​LorentzFactor\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/networkx/networkx/commit/7530809bfa1ea7ed6fdf918a4d1431488953cb1f\"\u003e\u003ccode\u003e7530809\u003c/code\u003e\u003c/a\u003e Designate 3.6.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/4788eb08f2492dd6bf6f97ce8ee07cd52aa6cf89\"\u003e\u003ccode\u003e4788eb0\u003c/code\u003e\u003c/a\u003e Rolling back shortest paths links (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8373\"\u003e#8373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/696edb6efbbbb622959e96f1276fc0db68dc0954\"\u003e\u003ccode\u003e696edb6\u003c/code\u003e\u003c/a\u003e Fix draw_networkx_nodes with list node_shape and add regression test  (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8363\"\u003e#8363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/c38830c61a6fee3ee10f216071bb63cb9b92bfb9\"\u003e\u003ccode\u003ec38830c\u003c/code\u003e\u003c/a\u003e Blocklist Python 3.14.1 (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8372\"\u003e#8372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/81d231141b08600ebfd1c781e28ecbf791e94016\"\u003e\u003ccode\u003e81d2311\u003c/code\u003e\u003c/a\u003e DOC: Fix underline lens in docstrings. (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8371\"\u003e#8371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/a6e2bfadef51dda47df6466b32642e0d428c5801\"\u003e\u003ccode\u003ea6e2bfa\u003c/code\u003e\u003c/a\u003e DOC: Add blurb to contributor guide about drawing tests. (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8370\"\u003e#8370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/96b628295eff29d266e1c75355556fc9fe58cc16\"\u003e\u003ccode\u003e96b6282\u003c/code\u003e\u003c/a\u003e DOC: clarify difference between G.nodes/G.nodes() and G.edges/G.edges() in tu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/75bdd737ca8382d06eb76ff9018a81870c9f3443\"\u003e\u003ccode\u003e75bdd73\u003c/code\u003e\u003c/a\u003e Fix: allow graph subclasses to have additional arguments (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8369\"\u003e#8369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/7663fa5e5fd73d6921410a18c7ac4116ffa04f4d\"\u003e\u003ccode\u003e7663fa5\u003c/code\u003e\u003c/a\u003e TST: clean up isomorphism tests (\u003ca href=\"https://redirect.github.com/networkx/networkx/issues/8364\"\u003e#8364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/networkx/networkx/commit/3dacd1bdcbd976b9e148a60ddebafd868c0a52f3\"\u003e\u003ccode\u003e3dacd1b\u003c/code\u003e\u003c/a\u003e Add spectral bipartition community finding and greedy bipartition using node ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/networkx/networkx/compare/networkx-3.4.2...networkx-3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.3 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak in flat assignment iterator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30516\"\u003e#30516\u003c/a\u003e: BUG: fix heap overflow in fixed-width string multiply (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30511\"\u003e#30511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30523\"\u003e#30523\u003c/a\u003e: BUG: Ensure summed weights returned by np.average always are...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30527\"\u003e#30527\u003c/a\u003e: TYP: Fix return type of histogram2d\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30594\"\u003e#30594\u003c/a\u003e: MAINT: avoid passing ints to random functions that take double...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30595\"\u003e#30595\u003c/a\u003e: BLD: Avoiding conflict with pygit2 for static build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30596\"\u003e#30596\u003c/a\u003e: MAINT: Fix msvccompiler missing error on FreeBSD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30608\"\u003e#30608\u003c/a\u003e: BLD: update vendored Meson to 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30620\"\u003e#30620\u003c/a\u003e: ENH: use more fine-grained critical sections in array coercion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30623\"\u003e#30623\u003c/a\u003e: BUG: Undo result type change of quantile/percentile but keep...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0 (Dec 20, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.0 release continues the work to improve free threaded Python\nsupport, user dtypes implementation, and annotations. There are many expired\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/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst\"\u003enumpy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis is a walkthrough of the NumPy 2.4.0 release on Linux, which will be the\nfirst feature release using the \u003ccode\u003enumpy/numpy-release \u0026lt;https://github.com/numpy/numpy-release\u0026gt;\u003c/code\u003e__ repository.\u003c/p\u003e\n\u003cp\u003eThe commands can be copied into the command line, but be sure to replace 2.4.0\nwith the correct version. This should be read together with the\n:ref:\u003ccode\u003egeneral release guide \u0026lt;prepare_release\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eFacility preparation\u003c/h1\u003e\n\u003cp\u003eBefore beginning to make a release, use the \u003ccode\u003erequirements/*_requirements.txt\u003c/code\u003e files to\nensure that you have the needed software. Most software can be installed with\npip, but some will require apt-get, dnf, or whatever your system uses for\nsoftware. You will also need a GitHub personal access token (PAT) to push the\ndocumentation. There are a few ways to streamline things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGit can be set up to use a keyring to store your GitHub personal access token.\nSearch online for the details.\u003c/li\u003e\n\u003cli\u003eYou can use the \u003ccode\u003ekeyring\u003c/code\u003e app to store the PyPI password for twine. See the\nonline twine documentation for details.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePrior to release\u003c/h1\u003e\n\u003ch2\u003eAdd/drop Python versions\u003c/h2\u003e\n\u003cp\u003eWhen adding or dropping Python versions, multiple config and CI files need to\nbe edited in addition to changing the minimum version in \u003ccode\u003epyproject.toml\u003c/code\u003e.\nMake these changes in an ordinary PR against main and backport if necessary.\nWe currently release wheels for new Python versions after the first Python RC\nonce manylinux and cibuildwheel support that new Python version.\u003c/p\u003e\n\u003ch2\u003eBackport pull requests\u003c/h2\u003e\n\u003cp\u003eChanges that have been marked for this release must be backported to the\nmaintenance/2.4.x branch.\u003c/p\u003e\n\u003ch2\u003eUpdate 2.4.0 milestones\u003c/h2\u003e\n\u003cp\u003eLook at the issues/prs with 2.4.0 milestones and either push them off to a\nlater version, or maybe remove the milestone. You may need to add a milestone.\u003c/p\u003e\n\u003cp\u003eCheck the numpy-release repo\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/numpy/numpy/commit/c81c49f77451340651a751e76bca607d85e4fd55\"\u003e\u003ccode\u003ec81c49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30757\"\u003e#30757\u003c/a\u003e from charris/prepare-2.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b3ae9c59de627110458653836f1be81280222f85\"\u003e\u003ccode\u003eb3ae9c5\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9de89843c3918fa133f1aab9fb4435c38a3b0ba6\"\u003e\u003ccode\u003e9de8984\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30737\"\u003e#30737\u003c/a\u003e from mattip/scipy-openblas-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b7be329895e32de44578742b2745fb307cdf8625\"\u003e\u003ccode\u003eb7be329\u003c/code\u003e\u003c/a\u003e backport scipy-openblas version change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7ff98637f80dc1ff7a18fce8025ffabdded76094\"\u003e\u003ccode\u003e7ff9863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30736\"\u003e#30736\u003c/a\u003e from charris/backport-30667\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/431fffbe91d86c04738f039e0048441f8f9b5fff\"\u003e\u003ccode\u003e431fffb\u003c/code\u003e\u003c/a\u003e MAINT: Skip tests that require \u003cstrong\u003ebuffer\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/127235fcd9b2e80764da8f6c64f942a6bddb093a\"\u003e\u003ccode\u003e127235f\u003c/code\u003e\u003c/a\u003e BUG: fix thread safety of \u003ccode\u003earray_getbuffer\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30667\"\u003e#30667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/18bdb2e675b68daa5afc3250c41982ff77b3867f\"\u003e\u003ccode\u003e18bdb2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30713\"\u003e#30713\u003c/a\u003e from charris/backport-30710\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/41dd7512de6dc3dd665b71d4e3a321aa1150dc48\"\u003e\u003ccode\u003e41dd751\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30712\"\u003e#30712\u003c/a\u003e from charris/backport-30705\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7a278da99943376313b8f631905c3baaa7a82a30\"\u003e\u003ccode\u003e7a278da\u003c/code\u003e\u003c/a\u003e BUG: Fixup the quantile promotion fixup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.2.3...v2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 11.1.0 to 12.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.1.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDeprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate getdata(), in favour of new get_flattened_data() \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9292\"...\n\n_Description has been truncated_","html_url":"https://github.com/briehl/narrative/pull/657","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/briehl%2Fnarrative/issues/657","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/657/packages"}},{"old_version":"4.7.2","new_version":"4.9.1","update_type":"minor","path":null,"pr_created_at":"2026-01-26T04:37:31.000Z","version_change":"4.7.2 → 4.9.1","issue":{"uuid":"3854485334","node_id":"PR_kwDOMftbFc6_Sm3X","number":190,"state":"closed","title":"Bump the py-updates group across 1 directory with 83 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-02T04:30:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T04:37:31.000Z","updated_at":"2026-02-02T04:30:53.000Z","time_to_close":604401,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":83,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.24","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.20","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.31.1","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"myst-parser","old_version":"4.0.1","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.2","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 83 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.24` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.34` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.34` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `3.0.0` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `23.0.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.34` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.34` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.20` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.14` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.31.1` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `4.0.1` | `5.0.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.2` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.52.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.24\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3af1873c23374171e0bc9a6891a361221178fd8d\"\u003e\u003ccode\u003e3af1873\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3db4f00603a7e7a76ffc0838593db9656e72799e\"\u003e\u003ccode\u003e3db4f00\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/2c19a9fcf0f35398a280868073b4170c02f4ef5a\"\u003e\u003ccode\u003e2c19a9f\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/80d79654015909384fe93f268867f5dec1e58705\"\u003e\u003ccode\u003e80d7965\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/75d1e11e5a5e06d8dcc5637ea26091874275eb99\"\u003e\u003ccode\u003e75d1e11\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/a220ab958493ad5a52289d964546d66538ee7711\"\u003e\u003ccode\u003ea220ab9\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c48c8ab1a19bdf5f8b3510e9948016443eb7d2e0\"\u003e\u003ccode\u003ec48c8ab\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/39e70dfeaa3a5dad7c8c49d08c64b79bc299c58c\"\u003e\u003ccode\u003e39e70df\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/094e6fa721d66f284e1466e758e32120b8594ab7\"\u003e\u003ccode\u003e094e6fa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/4cd22ade79f67568ad66b6d406882dcd02a6fa6c\"\u003e\u003ccode\u003e4cd22ad\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;UNION\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26039\"\u003e#26039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePropagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly pin chrono (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26051\"\u003e#26051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't run rust doctests (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26046\"\u003e#26046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26042\"\u003e#26042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIgnore very slow test (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26041\"\u003e#26041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/Voultapher\"\u003e\u003ccode\u003e@​Voultapher\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/wtn\"\u003e\u003ccode\u003e@​wtn\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/bb79993c3aa91d0db7d20be8f75c8075cad97067\"\u003e\u003ccode\u003ebb79993\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26078\"\u003e#26078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/26a9d097af5ea7d35f72bb8514ab990ddbce4796\"\u003e\u003ccode\u003e26a9d09\u003c/code\u003e\u003c/a\u003e chore: Mark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/451f247ba33506c9822478d0409a5075fec5797c\"\u003e\u003ccode\u003e451f247\u003c/code\u003e\u003c/a\u003e refactor(rust): Simplify \u003ccode\u003ePlPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26053\"\u003e#26053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b532aad910b0fe065b9fbe648944f3a580d3d104\"\u003e\u003ccode\u003eb532aad\u003c/code\u003e\u003c/a\u003e docs: Clarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/707796731ab7cf51f296a9b56a0231a5537e4259\"\u003e\u003ccode\u003e7077967\u003c/code\u003e\u003c/a\u003e fix: Optimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/44c139746390a0b81b3e908a8a6529cc6efdea1e\"\u003e\u003ccode\u003e44c1397\u003c/code\u003e\u003c/a\u003e fix: CPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/35ec39865a1952f60f46d17e461974881844b9c1\"\u003e\u003ccode\u003e35ec398\u003c/code\u003e\u003c/a\u003e chore: Update breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/84fa66381626dbd826e2d5a663285fb193356d64\"\u003e\u003ccode\u003e84fa663\u003c/code\u003e\u003c/a\u003e fix(python): Propagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e9e20e468cb84f966eed1e37a7b23afaf842e88f\"\u003e\u003ccode\u003ee9e20e4\u003c/code\u003e\u003c/a\u003e fix: Fix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b0fdbd34d430d934bda9a4ca3f75e136223bd95b\"\u003e\u003ccode\u003eb0fdbd3\u003c/code\u003e\u003c/a\u003e chore: Fix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9a285e6beab78c1f4c97047674ec09ac5451c4d1\"\u003e\u003ccode\u003e9a285e6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/29574158e22c3b2d6ca044eef1dc054d28d73485\"\u003e\u003ccode\u003e2957415\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8e1fd2e6e5c1fd6236cacf2dc9064d55d8baf07b\"\u003e\u003ccode\u003e8e1fd2e\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9cadce52dae6e58e450a9ac0745a721dda8a4044\"\u003e\u003ccode\u003e9cadce5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ee24f15c3013be4f4c6e76bfbc948b910e6f8f35\"\u003e\u003ccode\u003eee24f15\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b0f2cf318d9bef8eaf3f11cd81b22ce67810ea82\"\u003e\u003ccode\u003eb0f2cf3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6e690ed2966406d4b53532a44e70c93370368ae6\"\u003e\u003ccode\u003e6e690ed\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b84ec5ebd8880b77e998bfdd28984f214c3f1fa3\"\u003e\u003ccode\u003eb84ec5e\u003c/code\u003e\u003c/a\u003e Add BOTOCORE_TCP_KEEPALIVE environment variable documentation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4705\"\u003e#4705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/36cebd34052db2fc7449b85ac04f903fb40f8b2f\"\u003e\u003ccode\u003e36cebd3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d4d10440677e98c5c15fb6c84cc605bd7401fd74\"\u003e\u003ccode\u003ed4d1044\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/d52e6ce4372810dc3a0d6701b366f54add0aedae\"\u003e\u003ccode\u003ed52e6ce\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fce5268f1cd4063f30e3faec44da7efa309cae5f\"\u003e\u003ccode\u003efce5268\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/45e43f9baa8c57d13eb75d7566f1401366a1a188\"\u003e\u003ccode\u003e45e43f9\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b9ed58fa2f31170724538f6ed86e8cbf833de8fd\"\u003e\u003ccode\u003eb9ed58f\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/48062d233b8173af5af60afb85443e04c6520146\"\u003e\u003ccode\u003e48062d2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8eb5ab6cd38ba8d94d938fac2e6086bd918760dc\"\u003e\u003ccode\u003e8eb5ab6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05b651e910c4b59a971a2566afb4b82a51fb00fc\"\u003e\u003ccode\u003e05b651e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/aba67690e5aa14f58083dfa168d7fc09681c884a\"\u003e\u003ccode\u003eaba6769\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/3549e0136b656df25e985bdb85233f95da5851d3\"\u003e\u003ccode\u003e3549e01\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0847d5e023fd0f7d0e19a154ee22a46e8f56bc38\"\u003e\u003ccode\u003e0847d5e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.4.26 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `jmespath` from 1.0.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jmespath/jmespath.py/blob/develop/CHANGELOG.rst\"\u003ejmespath's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix concurrency issue with cache\n(\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12-3.14 (\u003ccode\u003epr [#331](https://github.com/jmespath/jmespath.py/issues/331) \u0026lt;https://github.com/jmespath/jmespath.py/pull/331\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for Python 3.7-3.8 (\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/6ff419a8b171d055a9bfc6904605bceb8b7a80ef\"\u003e\u003ccode\u003e6ff419a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.1.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/17e964f81911b49babb33e8697b34a31f869420f\"\u003e\u003ccode\u003e17e964f\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/5ce13aab582ba08b07e1c615feeb3654a7cd8d62\"\u003e\u003ccode\u003e5ce13aa\u003c/code\u003e\u003c/a\u003e Merge branch 'v1.1.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/d8f0457f8f962724b2c1ae12f79d3ba65edf4d82\"\u003e\u003ccode\u003ed8f0457\u003c/code\u003e\u003c/a\u003e Revert versions back to current version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/8cb30825f62675f6018b812faa9e2c9566eba2e3\"\u003e\u003ccode\u003e8cb3082\u003c/code\u003e\u003c/a\u003e 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/6e379910c1bc0ec0339b05da73e32cad9d3dddbc\"\u003e\u003ccode\u003e6e37991\u003c/code\u003e\u003c/a\u003e Update permissions in codeql.yml workflow (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/141734d98ac79c165ec31aa1c18dd29efc45ac49\"\u003e\u003ccode\u003e141734d\u003c/code\u003e\u003c/a\u003e Bring .github settings up-to-date (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/07e30cf011056386c3dade2502a53eb2b1d4b3c1\"\u003e\u003ccode\u003e07e30cf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/337\"\u003e#337\u003c/a\u003e from nateprewitt/python_changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/9170711017c2be9e3057a384e4a6061ef71bdc6f\"\u003e\u003ccode\u003e9170711\u003c/code\u003e\u003c/a\u003e Add missing changelog entries for Python support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/cdb9327fd597dda1aff703e6e5b98d79503c6f4e\"\u003e\u003ccode\u003ecdb9327\u003c/code\u003e\u003c/a\u003e Fix file encoding for Windows\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jmespath/jmespath.py/compare/1.0.1...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak i...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/190/packages"}},{"old_version":"\u003c4.8,\u003e=3.1.2","new_version":"\u003e=3.1.2,\u003c4.10","update_type":"patch","path":null,"pr_created_at":"2026-01-22T16:21:05.000Z","version_change":"\u003c4.8,\u003e=3.1.2 → \u003e=3.1.2,\u003c4.10","issue":{"uuid":"3843678665","node_id":"PR_kwDOQ7fPpM6-vF6G","number":3,"state":"open","title":"Update rsa requirement from \u003c4.8,\u003e=3.1.2 to \u003e=3.1.2,\u003c4.10","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-01-22T16:21:05.000Z","updated_at":"2026-01-22T16:21:06.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"rsa","old_version":"\u003c4.8,\u003e=3.1.2","new_version":"\u003e=3.1.2,\u003c4.10","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [rsa](https://github.com/sybrenstuvel/python-rsa) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.9 - release 2022-07-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove debug logging from \u003ccode\u003ersa/key.py\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/194\"\u003e#194\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove overlapping slots in \u003ccode\u003ePrivateKey\u003c/code\u003e and \u003ccode\u003ePublicKey\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/189\"\u003e#189\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDo not include CHANGELOG/LICENSE/README.md in wheel\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/191\"\u003e#191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed Key Generation Unittest: Public and Private keys are assigned the wrong way around\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/188\"\u003e#188\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.8 - released 2021-11-24\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://python-poetry.org/\"\u003ePoetry\u003c/a\u003e for dependency and release management.\u003c/li\u003e\n\u003cli\u003eCompatibility with Python 3.10.\u003c/li\u003e\n\u003cli\u003eChain exceptions using \u003ccode\u003eraise new_exception from old_exception\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded marker file for PEP 561. This will allow type checking tools in dependent projects\nto use type annotations from Python-RSA\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUse the Chinese Remainder Theorem when decrypting with a private key. This\nmakes decryption 2-4x faster\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/163\"\u003e#163\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7.2 - released 2021-02-24\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix picking/unpickling issue introduced in 4.7\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7.1 - released 2021-02-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix threading issue introduced in 4.7\n(\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.7 - released 2021-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e:\nCVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption\ncode\u003c/li\u003e\n\u003cli\u003eAdd padding length check as described by PKCS#1 v1.5 (Fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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 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/tysonjoe333/aws-cli/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tysonjoe333%2Faws-cli/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"}},{"old_version":"4.9","new_version":"4.9.1","update_type":null,"path":"/category_service","pr_created_at":"2026-01-20T00:11:38.000Z","version_change":"4.9 → 4.9.1","issue":{"uuid":"3831550388","node_id":"PR_kwDOP4p1Is6-Gm8K","number":230,"state":"open","title":"chore(deps): bump rsa from 4.9 to 4.9.1 in /category_service","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-20T00:11:38.000Z","updated_at":"2026-02-04T01:03:16.936Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/category_service","ecosystem":"pip"},"body":"Bumps [rsa](https://github.com/sybrenstuvel/python-rsa) from 4.9 to 4.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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=rsa\u0026package-manager=pip\u0026previous-version=4.9\u0026new-version=4.9.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/Klukvas/FinFlow/pull/230","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Klukvas%2FFinFlow/issues/230","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/230/packages"}},{"old_version":"4.9","new_version":"4.9.1","update_type":null,"path":null,"pr_created_at":"2026-01-19T01:08:56.000Z","version_change":"4.9 → 4.9.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.1.4","new_version":"4.7","update_type":null,"path":"/y/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","pr_created_at":"2026-01-13T14:08:05.000Z","version_change":"3.1.4 → 4.7","issue":{"uuid":"3809018744","node_id":"PR_kwDOQ5Cc0s688IIQ","number":114,"state":"open","title":"chore(deps): bump rsa from 3.1.4 to 4.7 in /y/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-13T14:08:05.000Z","updated_at":"2026-01-13T14:08:53.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"rsa","old_version":"3.1.4","new_version":"4.7","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/y/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","ecosystem":"pip"},"body":"Bumps the pip group with 1 update in the /y/google-cloud-sdk/platform/gsutil/gslib/vendored/boto directory: [rsa](https://github.com/sybrenstuvel/python-rsa).\n\nUpdates `rsa` from 3.1.4 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.7 - released 2021-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e:\nCVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption\ncode\u003c/li\u003e\n\u003cli\u003eAdd padding length check as described by PKCS#1 v1.5 (Fixes\n\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReuse of blinding factors to speed up blinding operations.\nFixes \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/162\"\u003e#162\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDeclare \u0026amp; test support for Python 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.4 \u0026amp; 4.6 - released 2020-06-12\u003c/h2\u003e\n\u003cp\u003eVersion 4.4 and 4.6 are almost a re-tagged release of version 4.2. It requires\nPython 3.5+. To avoid older Python installations from trying to upgrade to RSA\n4.4, this is now made explicit in the \u003ccode\u003epython_requires\u003c/code\u003e argument in \u003ccode\u003esetup.py\u003c/code\u003e.\nThere was a mistake releasing 4.4 as \u0026quot;3.5+ only\u0026quot;, which made it necessary to\nretag 4.4 as 4.6 as well.\u003c/p\u003e\n\u003cp\u003eNo functional changes compared to version 4.2.\u003c/p\u003e\n\u003ch2\u003eVersion 4.3 \u0026amp; 4.5 - released 2020-06-12\u003c/h2\u003e\n\u003cp\u003eVersion 4.3 and 4.5 are almost a re-tagged release of version 4.0. It is the\nlast to support Python 2.7. This is now made explicit in the \u003ccode\u003epython_requires\u003c/code\u003e\nargument in \u003ccode\u003esetup.py\u003c/code\u003e. Python 3.4 is not supported by this release. There was a\nmistake releasing 4.4 as \u0026quot;3.5+ only\u0026quot;, which made it necessary to retag 4.3 as\n4.5 as well.\u003c/p\u003e\n\u003cp\u003eTwo security fixes have also been backported, so 4.3 = 4.0 + these two fixes.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChoose blinding factor relatively prime to N. Thanks Christian Heimes for pointing this out.\u003c/li\u003e\n\u003cli\u003eReject cyphertexts (when decrypting) and signatures (when verifying) that have\nbeen modified by prepending zero bytes. This resolves CVE-2020-13757. Thanks\nCarnil for pointing this out.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.2 - released 2020-06-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRolled back the switch to Poetry, and reverted back to using Pipenv + setup.py\nfor dependency management. There apparently is an issue no-binary installs of\npackages build with Poetry. This fixes\n\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/148\"\u003e#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimited SHA3 support to those Python versions (3.6+) that support it natively.\nThe third-party library that adds support for this to Python 3.5 is a binary\npackage, and thus breaks the pure-Python nature of Python-RSA.\nThis should fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/147\"\u003e#147\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/sybrenstuvel/python-rsa/commit/fa3282a47457254385f2313c2eceaad4b06186a4\"\u003e\u003ccode\u003efa3282a\u003c/code\u003e\u003c/a\u003e Bumped version to 4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/a364e82caa4cb1fc51400a8c628fb48867fb4362\"\u003e\u003ccode\u003ea364e82\u003c/code\u003e\u003c/a\u003e Marked version 4.7 as released\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/539c54aada3922757099ce1911a28c46e8e81a10\"\u003e\u003ccode\u003e539c54a\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/170\"\u003e#170\u003c/a\u003e: mistake in examples of documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/b81e3171e9f870892e6b8a894db6d00ecd93f544\"\u003e\u003ccode\u003eb81e317\u003c/code\u003e\u003c/a\u003e Declare support for and test Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/06ec1ea1cc7be6034144bd06f07c35eb9d1b4953\"\u003e\u003ccode\u003e06ec1ea\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/162\"\u003e#162\u003c/a\u003e: Blinding uses slow algorithm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/341e5c4f939988bd472530441b6a02b625a30806\"\u003e\u003ccode\u003e341e5c4\u003c/code\u003e\u003c/a\u003e Directly raise \u003ccode\u003eDecryptionError\u003c/code\u003e when crypto length is bad\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/f254895b02f0cb106f9ccee6d8dc6af1a27f0bd1\"\u003e\u003ccode\u003ef254895\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ebytes.find()\u003c/code\u003e instead of \u003ccode\u003ebytes.index()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/240b0d8910299f970921391ea9737cb64ec09208\"\u003e\u003ccode\u003e240b0d8\u003c/code\u003e\u003c/a\u003e Add link to changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/f878c374086e672e7806fdd18401ec6b71cfa960\"\u003e\u003ccode\u003ef878c37\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/164\"\u003e#164\u003c/a\u003e: Add padding length check as described by PKCS#1 v1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/dae8ce0d85478e16f2368b2341632775313d41ed\"\u003e\u003ccode\u003edae8ce0\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e: CVE-2020-25658 - Bleichenbacher-style timing oracle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/compare/version-3.1.4...version-4.7\"\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=rsa\u0026package-manager=pip\u0026previous-version=3.1.4\u0026new-version=4.7)](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 \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/projetoautomatic7-prog/assisnte-juridico-local/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/projetoautomatic7-prog/assisnte-juridico-local/pull/114","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/projetoautomatic7-prog%2Fassisnte-juridico-local/issues/114","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/114/packages"}},{"old_version":"4.7.2","new_version":"4.9.1","update_type":"minor","path":null,"pr_created_at":"2026-01-12T04:41:08.000Z","version_change":"4.7.2 → 4.9.1","issue":{"uuid":"3802743037","node_id":"PR_kwDOMftbFc68njza","number":188,"state":"closed","title":"Bump the py-updates group across 1 directory with 79 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-19T04:50:43.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-12T04:41:08.000Z","updated_at":"2026-01-19T04:50:44.000Z","time_to_close":605375,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":79,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.15","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.0","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"22.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.19","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.30.0","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.1","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.51.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 79 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.15` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.25` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.25` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `22.0.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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.25` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.25` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.19` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.11` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.30.0` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.1` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.1` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.51.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.15\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/56a551a5916a09423336124a8967615e0d0be143\"\u003e\u003ccode\u003e56a551a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/b78a64f27cce6dc86754f39196b44f5b1a7f266d\"\u003e\u003ccode\u003eb78a64f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/715bce7cf992e841f04b6b15c701d4292450d9d6\"\u003e\u003ccode\u003e715bce7\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/72510f852833ea976520851bda26757265c6c207\"\u003e\u003ccode\u003e72510f8\u003c/code\u003e\u003c/a\u003e Create update-vpc-link.rst (\u003ca href=\"https://redirect.github.com/aws/aws-cli/issues/9405\"\u003e#9405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/d6a71c953a9155fceb7fcecf4246718153522c4d\"\u003e\u003ccode\u003ed6a71c9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/b2be64a7c3c8747a0cfd7b174307409f9c130420\"\u003e\u003ccode\u003eb2be64a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.14' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/95337ce8110bbd70efef24b8255892a374698e52\"\u003e\u003ccode\u003e95337ce\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3224f1b5e55abc438d1f86f06a70fef3dbaa89ca\"\u003e\u003ccode\u003e3224f1b\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/d90b023b6b34361dec3bffee9b64f62d662fa3d7\"\u003e\u003ccode\u003ed90b023\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/76549b03313edbe5b8e011b9cf35e3e89b5d5387\"\u003e\u003ccode\u003e76549b0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.13' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRelease musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25894\"\u003e#25894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming decompression for CSV \u003ccode\u003eCOUNT(*)\u003c/code\u003e fast path (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25988\"\u003e#25988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd nulls support for rolling_mean_by (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25917\"\u003e#25917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd lazy \u003ccode\u003ecollect_all\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25991\"\u003e#25991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd streaming decompression for NDJSON schema inference (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25992\"\u003e#25992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved handling of unqualified SQL \u003ccode\u003eJOIN\u003c/code\u003e columns that are ambiguous (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25761\"\u003e#25761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25984\"\u003e#25984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpose record batch size in \u003ccode\u003e{sink,write}_ipc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25958\"\u003e#25958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enull_on_oob\u003c/code\u003e parameter to \u003ccode\u003eexpr.get\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25957\"\u003e#25957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSuggest correct timezone if timezone validation fails (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25937\"\u003e#25937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport streaming IPC scan from S3 object store (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25868\"\u003e#25868\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming CSV schema inference (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25911\"\u003e#25911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport hashing of meta expressions (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25916\"\u003e#25916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eSQLContext\u003c/code\u003e recognition of possible table objects in the Python globals (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25749\"\u003e#25749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd pl.Expr.(min|max)_by (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25905\"\u003e#25905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove MemSlice Debug impl (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25913\"\u003e#25913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement or fix json encode/decode for (U)Int128, Categorical, Enum, Decimal (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25896\"\u003e#25896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand scatter to more dtypes (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25874\"\u003e#25874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming CSV decompression (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25842\"\u003e#25842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Series \u003ccode\u003esql\u003c/code\u003e method for API consistency (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25792\"\u003e#25792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMark Polars as safe for free-threading (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25677\"\u003e#25677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Binary and Decimal in arg_(min|max) (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25839\"\u003e#25839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow Decimal parsing in str.json_decode (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25797\"\u003e#25797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eshift\u003c/code\u003e support for Object data type (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25769\"\u003e#25769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing \u003ccode\u003eSeries.arr.mean\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25774\"\u003e#25774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow scientific notation when parsing Decimals (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25711\"\u003e#25711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/1674b37a0a066e76d33eb8f66d31fd870c0cd52d\"\u003e\u003ccode\u003e1674b37\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.0 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26038\"\u003e#26038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/4c49bf5ebb9208e70a84a7effdc5368bc901ba84\"\u003e\u003ccode\u003e4c49bf5\u003c/code\u003e\u003c/a\u003e perf: Speed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/c1b9d86310269ae4ab22a9bff87d8f2657c8b050\"\u003e\u003ccode\u003ec1b9d86\u003c/code\u003e\u003c/a\u003e chore: Update rust compiler (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26017\"\u003e#26017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/68911e4e9f7a2bdedca6d3aefa208a6ec02cf8ad\"\u003e\u003ccode\u003e68911e4\u003c/code\u003e\u003c/a\u003e chore: Improve csv test coverage (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25980\"\u003e#25980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/5f25b4f6b828bcd5df1116b0517358ad51c51529\"\u003e\u003ccode\u003e5f25b4f\u003c/code\u003e\u003c/a\u003e perf: Add fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/59463cefe36550547b50e5c6801b1d98516cc0c8\"\u003e\u003ccode\u003e59463ce\u003c/code\u003e\u003c/a\u003e docs(python): Fix display of deprecation warning (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26010\"\u003e#26010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/21721eba70b9fc18dff58958997c151dfe214903\"\u003e\u003ccode\u003e21721eb\u003c/code\u003e\u003c/a\u003e fix(python): Release GIL on collect_batches (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26033\"\u003e#26033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/778dbb645ccbff8b1e5999a279037571a03c718b\"\u003e\u003ccode\u003e778dbb6\u003c/code\u003e\u003c/a\u003e fix: Missing buffer update in String is_in Parquet pushdown (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26019\"\u003e#26019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/807cfc5a2eae6af453b14a1663e74d07202ce92e\"\u003e\u003ccode\u003e807cfc5\u003c/code\u003e\u003c/a\u003e fix: Make \u003ccode\u003estruct.with_fields\u003c/code\u003e data model coherent (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25610\"\u003e#25610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e6d62387f64b225754c15ad1e0b3d4f981509692\"\u003e\u003ccode\u003ee6d6238\u003c/code\u003e\u003c/a\u003e refactor(rust): Use \u003ccode\u003efrom_any_values_and_dtype\u003c/code\u003e in \u003ccode\u003eSeries::extend_constant\u003c/code\u003e ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8dd60074e59d29c733b6b6eefad3a75ab615090b\"\u003e\u003ccode\u003e8dd6007\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0bf89db7865cfef4ed697b92199c093ca6f5f803\"\u003e\u003ccode\u003e0bf89db\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/34bf8f819c2870d7baa90c6e65f83dea34586bdd\"\u003e\u003ccode\u003e34bf8f8\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9b8fbad82f97a16e4b468b7f9ff83bafa2e8d55d\"\u003e\u003ccode\u003e9b8fbad\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6dda579bbbeafe145506fb40a65a2f7979f196c2\"\u003e\u003ccode\u003e6dda579\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dc3945deb487ce84d804cb813b8075461973041f\"\u003e\u003ccode\u003edc3945d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/60784e3398975b90331d227e1377a42232fd3f8a\"\u003e\u003ccode\u003e60784e3\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dae67fb6753924da30b42cc61dc0d940a672afbd\"\u003e\u003ccode\u003edae67fb\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c7b7d4157a8130921bf9e7bef024a1dd17eaf600\"\u003e\u003ccode\u003ec7b7d41\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/95878f640e54fa7658e242eb2213d361b92162c2\"\u003e\u003ccode\u003e95878f6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.23\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/a35f376045da3bc2dcf0de2c1346482ce1ad30c7\"\u003e\u003ccode\u003ea35f376\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/721ab7860e75d7c5ef5c0eda91f18c568b2f31e1\"\u003e\u003ccode\u003e721ab78\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b4541b5471194a63234467945b97397e42e265e4\"\u003e\u003ccode\u003eb4541b5\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/90830226c8e3cd3b96755c3b71be3314225871e3\"\u003e\u003ccode\u003e9083022\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/331cd6689f458e58465234ad58a60881d49007fa\"\u003e\u003ccode\u003e331cd66\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/47f2b30e092fd853d28193d60cb10acf8a89b5ec\"\u003e\u003ccode\u003e47f2b30\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/230fac5f074e94b3c32f112624c04224d123873d\"\u003e\u003ccode\u003e230fac5\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/cc102f140d97d286544a36adb5c3fc6043c50321\"\u003e\u003ccode\u003ecc102f1\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/beaeab5eee438b737029aa27c7b7641ec89ba3ad\"\u003e\u003ccode\u003ebeaeab5\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/f6e323727729fb2aa26ec9f8362de39d6adf1d2e\"\u003e\u003ccode\u003ef6e3237\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.4.26 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak in flat assignment iterator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30516\"\u003e#30516\u003c/a\u003e: BUG: fix heap overflow in fixed-width string multiply (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30511\"\u003e#30511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30523\"\u003e#30523\u003c/a\u003e: BUG: Ensure summed weights returned by np.average always are...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30527\"\u003e#30527\u003c/a\u003e: TYP: Fix return type of histogram2d\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30594\"\u003e#30594\u003c/a\u003e: MAINT: avoid passing ints to random functions that take double...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30595\"\u003e#30595\u003c/a\u003e: BLD: Avoiding conflict with pygit2 for static build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30596\"\u003e#30596\u003c/a\u003e: MAINT: Fix msvccompiler missing error on FreeBSD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30608\"\u003e#30608\u003c/a\u003e: BLD: update vendored Meson to 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30620\"\u003e#30620\u003c/a\u003e: ENH: use more fine-grained critical sections in array coercion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30623\"\u003e#30623\u003c/a\u003e: BUG: Undo result type change of quantile/percentile but keep...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0 (Dec 20, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.0 release continues the work to improve free threaded Python\nsupport, user dtypes implementation, and annotations. There are many expired\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/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst\"\u003enumpy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis is a walkthrough of the NumPy 2.4.0 release on Linux, which will be the\nfirst feature release using the \u003ccode\u003enumpy/numpy-release \u0026lt;https://github.com/numpy/numpy-release\u0026gt;\u003c/code\u003e__ repository.\u003c/p\u003e\n\u003cp\u003eThe comm...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/188","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/188","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/188/packages"}},{"old_version":"4.9","new_version":"4.9.1","update_type":null,"path":null,"pr_created_at":"2026-01-05T00:24:42.000Z","version_change":"4.9 → 4.9.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":"4.9","new_version":"4.9.1","update_type":null,"path":"/backend","pr_created_at":"2025-12-30T16:10:14.000Z","version_change":"4.9 → 4.9.1","issue":{"uuid":"3770637328","node_id":"PR_kwDOJSppwM66_m_n","number":48,"state":"open","title":"chore(deps): bump the production group in /backend with 60 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-30T16:10:14.000Z","updated_at":"2025-12-30T18:01:47.191Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"production","update_count":60,"packages":[{"name":"alembic","old_version":"1.13.3","new_version":"1.17.2","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"celery","old_version":"5.4.0","new_version":"5.6.1","repository_url":"https://github.com/celery/celery"},{"name":"minio","old_version":"7.2.9","new_version":"7.2.20","repository_url":"https://github.com/minio/minio-py"},{"name":"psycopg","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.5.2","new_version":"2.12.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"sqlmodel","old_version":"0.0.22","new_version":"0.0.31","repository_url":"https://github.com/fastapi/sqlmodel"},{"name":"httpcore","old_version":"1.0.5","new_version":"1.0.9","repository_url":"https://github.com/encode/httpcore"},{"name":"greenlet","old_version":"3.0.3","new_version":"3.3.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"aiosqlite","old_version":"0.20.0","new_version":"0.22.1","repository_url":"https://github.com/omnilib/aiosqlite"},{"name":"coverage","old_version":"7.6.2","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"factory-boy","old_version":"3.3.1","new_version":"3.3.3","repository_url":"https://github.com/FactoryBoy/factory_boy"},{"name":"ruff","old_version":"0.6.9","new_version":"0.14.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"amqp","old_version":"5.2.0","new_version":"5.3.1","repository_url":"https://github.com/celery/py-amqp"},{"name":"anyio","old_version":"4.4.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"billiard","old_version":"4.2.0","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"click","old_version":"8.1.7","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":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"ecdsa","old_version":"0.19.0","new_version":"0.19.1","repository_url":"https://github.com/tlsfuzzer/python-ecdsa"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastapi","old_version":"0.115.0","new_version":"0.128.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.15.4","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"httptools","old_version":"0.6.1","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"identify","old_version":"2.6.0","new_version":"2.6.15","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.7","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jiter","old_version":"0.5.0","new_version":"0.12.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"kombu","old_version":"5.3.7","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"mako","old_version":"1.3.5","new_version":"1.3.10","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"platformdirs","old_version":"4.2.2","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":"pre-commit","old_version":"4.0.1","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"prompt-toolkit","old_version":"3.0.47","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pyasn1","old_version":"0.6.0","new_version":"0.6.1","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pycryptodome","old_version":"3.20.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pydantic-core","old_version":"2.20.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0","repository_url":"https://github.com/mpdavis/python-jose"},{"name":"python-multipart","old_version":"0.0.12","new_version":"0.0.21","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"sqladmin","old_version":"0.19.0","new_version":"0.22.0","repository_url":"https://github.com/aminalaee/sqladmin"},{"name":"sqlalchemy","old_version":"2.0.31","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"0.37.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tqdm","old_version":"4.66.4","new_version":"4.67.1","repository_url":"https://github.com/tqdm/tqdm"},{"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.2","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.31.1","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"20.26.3","new_version":"20.35.4","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":"wtforms","old_version":"3.1.2","new_version":"3.2.1","repository_url":"https://github.com/pallets-eco/wtforms"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the production group in /backend with 60 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.3` | `1.17.2` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [celery](https://github.com/celery/celery) | `5.4.0` | `5.6.1` |\n| [minio](https://github.com/minio/minio-py) | `7.2.9` | `7.2.20` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.2.3` | `3.3.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.5.2` | `2.12.0` |\n| [sqlmodel](https://github.com/fastapi/sqlmodel) | `0.0.22` | `0.0.31` |\n| [httpcore](https://github.com/encode/httpcore) | `1.0.5` | `1.0.9` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.0.3` | `3.3.0` |\n| [aiosqlite](https://github.com/omnilib/aiosqlite) | `0.20.0` | `0.22.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.6.2` | `7.13.1` |\n| [factory-boy](https://github.com/FactoryBoy/factory_boy) | `3.3.1` | `3.3.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.6.9` | `0.14.10` |\n| [amqp](https://github.com/celery/py-amqp) | `5.2.0` | `5.3.1` |\n| [anyio](https://github.com/agronholm/anyio) | `4.4.0` | `4.12.0` |\n| [billiard](https://github.com/celery/billiard) | `4.2.0` | `4.2.4` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [ecdsa](https://github.com/tlsfuzzer/python-ecdsa) | `0.19.0` | `0.19.1` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.0` | `0.128.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.15.4` | `3.20.1` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.1` | `0.7.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.0` | `2.6.15` |\n| [idna](https://github.com/kjd/idna) | `3.7` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.3.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [jiter](https://github.com/pydantic/jiter) | `0.5.0` | `0.12.0` |\n| [kombu](https://github.com/celery/kombu) | `5.3.7` | `5.6.2` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.5` | `1.3.10` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.2` | `4.5.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.0.1` | `4.5.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.47` | `3.0.52` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.0` | `0.6.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pycryptodome](https://github.com/Legrandin/pycryptodome) | `3.20.0` | `3.23.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.20.1` | `2.41.5` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-jose](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.12` | `0.0.21` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.9` | `4.9.1` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [sqladmin](https://github.com/aminalaee/sqladmin) | `0.19.0` | `0.22.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.31` | `2.0.45` |\n| [starlette](https://github.com/Kludex/starlette) | `0.37.2` | `0.50.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.66.4` | `4.67.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.2` | `2.6.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.31.1` | `0.40.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.26.3` | `20.35.4` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n| [wtforms](https://github.com/pallets-eco/wtforms) | `3.1.2` | `3.2.1` |\n\nUpdates `alembic` from 1.13.3 to 1.17.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.17.2\u003c/h1\u003e\n\u003cp\u003eReleased: November 14, 2025\u003c/p\u003e\n\u003ch2\u003efeature\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [operations]\u003c/strong\u003e Added \u003ccode\u003eOperations.implementation_for.replace\u003c/code\u003e parameter to\n\u003ccode\u003eOperations.implementation_for()\u003c/code\u003e, allowing replacement of existing\noperation implementations.  This allows for existing operations such as\n\u003ccode\u003eCreateTableOp\u003c/code\u003e to be extended directly.  Pull request courtesy\njustanothercatgirl.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1750\"\u003e#1750\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mssql]\u003c/strong\u003e Fixed issue in SQL Server dialect where the DROP that's automatically\nemitted for existing default constraints during an ALTER COLUMN needs to\ntake place before not just the modification of the column's default, but\nalso before the column's type is changed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1744\"\u003e#1744\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.17.1\u003c/h1\u003e\n\u003cp\u003eReleased: October 28, 2025\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003ecommand.current.check_heads\u003c/code\u003e parameter to\n\u003ccode\u003ecommand.current()\u003c/code\u003e command, available from the command line via the\n\u003ccode\u003e--check-heads\u003c/code\u003e option to \u003ccode\u003ealembic current\u003c/code\u003e.  This tests if all head\nrevisions are applied to the database and raises \u003ccode\u003eDatabaseNotAtHead\u003c/code\u003e\n(or from the command line, exits with a non-zero exit code) if this is not\nthe case.  The parameter operates equvialently to the cookbook recipe\n\u003ccode\u003ecookbook_check_heads\u003c/code\u003e. Pull request courtesy Stefan Scherfke.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[bug] [commands]\u003c/strong\u003e Disallow ':' character in custom revision identifiers. Previously, using a\ncolon in a revision ID (e.g., 'REV:1') would create the revision, however\nrevisions with colons in them are not correctly interpreted by other\ncommands, as it overlaps with the revision range syntax.   Pull request\ncourtesy Kim Wooseok with original implementation by Hrushikesh Patil.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.29.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.30.0\u003c/h2\u003e\n\u003cp\u003eSupport Python 3.13 and PostgreSQL 17.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImplement GSSAPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1d4e5680 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1122\"\u003e#1122\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement SSPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1aab2094 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1128\"\u003e#1128\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd initial typings\n(by \u003ca href=\"https://github.com/bryanforbes\"\u003e\u003ccode\u003e@​bryanforbes\u003c/code\u003e\u003c/a\u003e in d42432bf for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1127\"\u003e#1127\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow building with Cython 3\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/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.29.0...v0.31.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.6.1\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.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10020\"\u003ecelery/celery#10020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup by \u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereliable prefork detection by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10023\"\u003ecelery/celery#10023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebetter coverage by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10029\"\u003ecelery/celery#10029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example by \u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests 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/10032\"\u003ecelery/celery#10032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 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/celery/pull/10033\"\u003ecelery/celery#10033\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/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\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.6.0...v5.6.1\"\u003ehttps://github.com/celery/celery/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.celeryq.dev/en/stable/history/whatsnew-5.6.html\"\u003eWhat's new in Celery 5.6\u003c/a\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch3\u003ePython 3.9 Minimum Version\u003c/h3\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python version is now 3.9. Users still on Python 3.8 must upgrade their Python version before upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in Celery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS users.\u003c/p\u003e\n\u003cp\u003eContributed 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/9620\"\u003ecelery/celery#9620\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eSecurity Fix: Broker Credential Leak Prevention\u003c/h3\u003e\n\u003cp\u003eFixed a security issue where broker URLs containing passwords were being logged in plaintext by the delayed delivery mechanism. Broker credentials are now properly sanitized in all log output.\u003c/p\u003e\n\u003cp\u003eContributed by \u003ca href=\"https://github.com/giancarloromeo\"\u003e\u003ccode\u003e@​giancarloromeo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9997\"\u003ecelery/celery#9997\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eMemory Leak Fixes\u003c/h3\u003e\n\u003cp\u003eTwo significant memory leaks have been fixed in this release:\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/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-12-29\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Redis Sentinel ACL authentication support ([#10013](https://github.com/celery/celery/issues/10013))\n- Fix: Broker heartbeats not sent during graceful shutdown ([#9986](https://github.com/celery/celery/issues/9986))\n- docs [#5410](https://github.com/celery/celery/issues/5410) -- Document confirm_publish broker transport option ([#10016](https://github.com/celery/celery/issues/10016))\n- close DB pools only in prefork mode ([#10020](https://github.com/celery/celery/issues/10020))\n- Fix: Avoid unnecessary Django database connection creation during cleanup ([#10015](https://github.com/celery/celery/issues/10015))\n- reliable prefork detection ([#10023](https://github.com/celery/celery/issues/10023))\n- better coverage ([#10029](https://github.com/celery/celery/issues/10029))\n- Docs: clarify `result_extended` vs periodic task metadata and show `headers[\u0026quot;periodic_task_name\u0026quot;]` example ([#10030](https://github.com/celery/celery/issues/10030))\n- Stop importing pytest_subtests ([#10032](https://github.com/celery/celery/issues/10032))\n- Only use exceptiongroup backport for Python \u0026lt; 3.11 ([#10033](https://github.com/celery/celery/issues/10033))\n- Prepare for release: v5.6.1 ([#10037](https://github.com/celery/celery/issues/10037))\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-11-30\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003cp\u003eKey Highlights\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eSee :ref:\u003ccode\u003ewhatsnew-5.6\u003c/code\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch2\u003ePython 3.9 Minimum Version\u003c/h2\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python\nversion is now 3.9. Users still on Python 3.8 must upgrade their Python version\nbefore upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch2\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in\nCelery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS\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/celery/celery/commit/21dbc73f81d2fae058de49e665afaa1cd92da5c0\"\u003e\u003ccode\u003e21dbc73\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ba20bed7723c684d12ddd62d6a7c0c0d901b3351\"\u003e\u003ccode\u003eba20bed\u003c/code\u003e\u003c/a\u003e Only use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21675299bc2d10c648448ec5221136e07c1eec1a\"\u003e\u003ccode\u003e2167529\u003c/code\u003e\u003c/a\u003e Stop importing pytest_subtests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0527296acb1f1790788301d4395ba6d5ce2a9704\"\u003e\u003ccode\u003e0527296\u003c/code\u003e\u003c/a\u003e Bump google-cloud-firestore from 2.21.0 to 2.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5f8659bdba4561796d66e938a1e2c71d4489562f\"\u003e\u003ccode\u003e5f8659b\u003c/code\u003e\u003c/a\u003e Clarify 'result_extended' setting usage in tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f19db7008682c782d85e69b5ce736970491752ea\"\u003e\u003ccode\u003ef19db70\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.19.0 to 1.19.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10028\"\u003e#10028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6da72bde60553a1c350eef1e17d834d004ed099d\"\u003e\u003ccode\u003e6da72bd\u003c/code\u003e\u003c/a\u003e better coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/170fe556eca986da69aecba10e408859e871ada0\"\u003e\u003ccode\u003e170fe55\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10027\"\u003e#10027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/cb08d5042a8ce1758a7460ca6856491b36949f20\"\u003e\u003ccode\u003ecb08d50\u003c/code\u003e\u003c/a\u003e reliable prefork detection (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10023\"\u003e#10023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/cc3350ef9867a34b1f3563222bd015d123ef1ad7\"\u003e\u003ccode\u003ecc3350e\u003c/code\u003e\u003c/a\u003e Fix: Avoid unnecessary Django database connection creation during cleanup (\u003ca href=\"https://redirect.github.com/celery/celery/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.4.0...v5.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `minio` from 7.2.9 to 7.2.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/minio/minio-py/releases\"\u003eminio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBugfix Release 7.2.20\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnable github CI run by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1543\"\u003eminio/minio-py#1543\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BaseException internals to be set (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1521\"\u003e#1521\u003c/a\u003e) by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1539\"\u003eminio/minio-py#1539\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Add missing type annotations to serialization dataclass fields (… by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1540\"\u003eminio/minio-py#1540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport optional parameters in LdapIdentityProvider (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1528\"\u003e#1528\u003c/a\u003e) by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1541\"\u003eminio/minio-py#1541\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix object_size/headers in ComposeSource by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1545\"\u003eminio/minio-py#1545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix complete_multipart_upload() to support SSE-C by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1544\"\u003eminio/minio-py#1544\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.18...7.2.20\"\u003ehttps://github.com/minio/minio-py/compare/7.2.18...7.2.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix release 7.2.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd region, extra_headers and extra_query_params by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1505\"\u003eminio/minio-py#1505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BaseException internals to be set by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1521\"\u003eminio/minio-py#1521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Add missing type annotations to serialization dataclass fields by \u003ca href=\"https://github.com/rraulinio\"\u003e\u003ccode\u003e@​rraulinio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1527\"\u003eminio/minio-py#1527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport optional parameters in LdapIdentityProvider by \u003ca href=\"https://github.com/jkandasa\"\u003e\u003ccode\u003e@​jkandasa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1528\"\u003eminio/minio-py#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncorrect existing checksum headers to both CreateMultipartUpload and UploadPart requests by \u003ca href=\"https://github.com/rraulinio\"\u003e\u003ccode\u003e@​rraulinio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1529\"\u003eminio/minio-py#1529\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/rraulinio\"\u003e\u003ccode\u003e@​rraulinio\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1527\"\u003eminio/minio-py#1527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jkandasa\"\u003e\u003ccode\u003e@​jkandasa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1528\"\u003eminio/minio-py#1528\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.18...7.2.19\"\u003ehttps://github.com/minio/minio-py/compare/7.2.18...7.2.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix Release 7.2.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix ETag parsing in CompleteMultipartUploadResult by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1518\"\u003eminio/minio-py#1518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecredentials: set expiration using object.\u003cstrong\u003esetattr\u003c/strong\u003e() by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1516\"\u003eminio/minio-py#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecleanup: SSE-C keys fix a misleading error message by \u003ca href=\"https://github.com/marktheunissen\"\u003e\u003ccode\u003e@​marktheunissen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1514\"\u003eminio/minio-py#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add py.typed in setup.py by \u003ca href=\"https://github.com/tughril\"\u003e\u003ccode\u003e@​tughril\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1513\"\u003eminio/minio-py#1513\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/marktheunissen\"\u003e\u003ccode\u003e@​marktheunissen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1514\"\u003eminio/minio-py#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tughril\"\u003e\u003ccode\u003e@​tughril\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1513\"\u003eminio/minio-py#1513\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.17...7.2.18\"\u003ehttps://github.com/minio/minio-py/compare/7.2.17...7.2.18\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix Release 7.2.17\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinioAdmin: allow specifying policies as dict besides file by \u003ca href=\"https://github.com/Alveel\"\u003e\u003ccode\u003e@​Alveel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1480\"\u003eminio/minio-py#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix too-many-positional-arguments error and other issues by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1504\"\u003eminio/minio-py#1504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCredentials: redact password in URL by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1511\"\u003eminio/minio-py#1511\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.16...7.2.17\"\u003ehttps://github.com/minio/minio-py/compare/7.2.16...7.2.17\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix Release\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/f671ca948b35978c39a3100e4ae0e9b93416b911\"\u003e\u003ccode\u003ef671ca9\u003c/code\u003e\u003c/a\u003e Update version to next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/53c8c93f78acae9bfbd48974e8de82f831e74927\"\u003e\u003ccode\u003e53c8c93\u003c/code\u003e\u003c/a\u003e fix complete_multipart_upload() to support SSE-C (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/27997bdc71e0360ca5dabf87193b5bde2be38e31\"\u003e\u003ccode\u003e27997bd\u003c/code\u003e\u003c/a\u003e fix object_size/headers in ComposeSource (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1545\"\u003e#1545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/dd17dfb9bc5482a160f667ece87c128fa9cd9fe7\"\u003e\u003ccode\u003edd17dfb\u003c/code\u003e\u003c/a\u003e support optional parameters in LdapIdentityProvider (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1528\"\u003e#1528\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1541\"\u003e#1541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/4170c34351595f0890e4b7d2dfbc03cccc401e3b\"\u003e\u003ccode\u003e4170c34\u003c/code\u003e\u003c/a\u003e Fix: Add missing type annotations to serialization dataclass fields (… (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/da273039c52a48f838f74a83520d59d5a3c12adf\"\u003e\u003ccode\u003eda27303\u003c/code\u003e\u003c/a\u003e Make BaseException internals to be set (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1521\"\u003e#1521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1539\"\u003e#1539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/535ac42819272894e030a390904f917dd5ec675d\"\u003e\u003ccode\u003e535ac42\u003c/code\u003e\u003c/a\u003e Enable github CI run (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/64ed1ef509545107eb771b7ae150d1311ccdf271\"\u003e\u003ccode\u003e64ed1ef\u003c/code\u003e\u003c/a\u003e Update version to next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/ff647fe1fcb0ffb1ed190b6c6d1c8c958056508f\"\u003e\u003ccode\u003eff647fe\u003c/code\u003e\u003c/a\u003e feat: add py.typed in setup.py (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1513\"\u003e#1513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/minio/minio-py/commit/ddb99190885a7b951339beec1ba5984c93be1341\"\u003e\u003ccode\u003eddb9919\u003c/code\u003e\u003c/a\u003e cleanup: SSE-C keys fix a misleading error message (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1514\"\u003e#1514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.9...7.2.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg` from 3.2.3 to 3.3.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003ePsycopg 3.3.1\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix iteration on server-side cursors (:ticket:\u003ccode\u003e[#1226](https://github.com/psycopg/psycopg/issues/1226)\u003c/code\u003e).\u003c/p\u003e\n\u003ch2\u003ePsycopg 3.3.0\u003c/h2\u003e\n\u003cp\u003e.. rubric:: New top-level features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd :ref:\u003ccode\u003etemplate strings queries \\\u0026lt;template-strings\u0026gt;\u003c/code\u003e (:ticket:\u003ccode\u003e[#1054](https://github.com/psycopg/psycopg/issues/1054)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eMore flexible :ref:\u003ccode\u003ecomposite adaptation\u0026lt;adapt-composite\u0026gt;\u003c/code\u003e: it is now possible\nto adapt Python objects to PostgreSQL composites and back even if they are not\nsequences or if they take keyword arguments (:ticket:\u003ccode\u003e[#932](https://github.com/psycopg/psycopg/issues/932)\u003c/code\u003e, :ticket:\u003ccode\u003e[#1202](https://github.com/psycopg/psycopg/issues/1202)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eCursors are now iterators_, not just iterables_. This means you can call\n\u003ccode\u003enext\u003c/code\u003e\\ \u003ccode\u003e(cur)\u003c/code\u003e or \u003ccode\u003eanext\u003c/code\u003e\\ \u003ccode\u003e(cur)\u003c/code\u003e, which is useful as a :ref:\u003ccode\u003etype-safe expression \u0026lt;typing-fetchone\u0026gt;\u003c/code\u003e (:ticket:\u003ccode\u003e[#1064](https://github.com/psycopg/psycopg/issues/1064)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eCursor.set_result()\u003c/code\u003e and \u003ccode\u003eCursor.results()\u003c/code\u003e to move across the result\nsets of queries executed though \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e or\n\u003ccode\u003e~Cursor.execute()\u003c/code\u003e with multiple statements (:tickets:\u003ccode\u003e[#1080](https://github.com/psycopg/psycopg/issues/1080), [#1170](https://github.com/psycopg/psycopg/issues/1170)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd :ref:\u003ccode\u003etransaction-status\u003c/code\u003e to report the status during and after a\n\u003ccode\u003e~Connection.transaction()\u003c/code\u003e block (:ticket:\u003ccode\u003e[#969](https://github.com/psycopg/psycopg/issues/969)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAllow to change loaders using \u003ccode\u003e~adapt.AdaptersMap.register_loader()\u003c/code\u003e on\n\u003ccode\u003eCursor.adapters\u003c/code\u003e after a query result has been already returned\n(:ticket:\u003ccode\u003e[#884](https://github.com/psycopg/psycopg/issues/884)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. rubric:: New libpq wrapper features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epq.PGconn.used_gssapi\u003c/code\u003e attribute and \u003ccode\u003eCapabilities.has_used_gssapi()\u003c/code\u003e\nfunction (:ticket:\u003ccode\u003e[#1138](https://github.com/psycopg/psycopg/issues/1138)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eConnectionInfo.full_protocol_version\u003c/code\u003e attribute,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc9e7bde14acd080c7597185a7904a4bc246ed0e\"\u003e\u003ccode\u003ebc9e7bd\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/3bcabb4592c6352aedb23f315dbd81326e9fbd14\"\u003e\u003ccode\u003e3bcabb4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1231\"\u003e#1231\u003c/a\u003e from noirbee/fix/1230-adapter-get-dumper-race-condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/08bfe006ae0d9dea00b69f6a6df8497a0c0e4965\"\u003e\u003ccode\u003e08bfe00\u003c/code\u003e\u003c/a\u003e fix(adapters): avoid race condition when replacing class name with itself\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7be710e7cbe42c94288efeda0bb5a87ad9659f03\"\u003e\u003ccode\u003e7be710e\u003c/code\u003e\u003c/a\u003e fix: mark external libpq C functions as noexcept nogil\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/6a24300ad2392e502a7c9d3c244ead6852890d90\"\u003e\u003ccode\u003e6a24300\u003c/code\u003e\u003c/a\u003e docs: larger font for 3.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/5a60a1e6b2394e6d3ccdb1d08cfd24d6fbac3d78\"\u003e\u003ccode\u003e5a60a1e\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.2.dev1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/9bdd78cf4360b9229ab3f641c646e232fc69cc8a\"\u003e\u003ccode\u003e9bdd78c\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/4d27426bf197a1eca8ea99ab9e236e1c8e0f15fa\"\u003e\u003ccode\u003e4d27426\u003c/code\u003e\u003c/a\u003e Merge branch 'fix/server-cursor-iter'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b9b82e86e3ce1972581a495ccbe28d5dbb15c449\"\u003e\u003ccode\u003eb9b82e8\u003c/code\u003e\u003c/a\u003e fix: fix iteration on server-side cursor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2a75357de22bb63ede33006cd17c99b30e360cdf\"\u003e\u003ccode\u003e2a75357\u003c/code\u003e\u003c/a\u003e fix: add test to verify iteration in server-side cursor broken\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.2.3...3.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.8.2 to 2.12.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\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/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.8.2...v2.12.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.5.2 to 2.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for enum kebab case. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/686\"\u003epydantic/pydantic-settings#686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eApply source order: init \u0026gt; env \u0026gt; dotenv \u0026gt; secrets \u0026gt; defaults and pres… by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/688\"\u003epydantic/pydantic-settings#688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd NestedSecretsSettings source by \u003ca href=\"https://github.com/makukha\"\u003e\u003ccode\u003e@​makukha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/690\"\u003epydantic/pydantic-settings#690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip non-explicit default values. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/692\"\u003epydantic/pydantic-settings#692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCoerce env vars if strict is True. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/693\"\u003epydantic/pydantic-settings#693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore init kwarg names before returning final state dictionary. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/700\"\u003epydantic/pydantic-settings#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python3.9 support by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/699\"\u003epydantic/pydantic-settings#699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt test_protected_namespace_defaults for dev. Pydantic by \u003ca href=\"https://github.com/musicinmybrain\"\u003e\u003ccode\u003e@​musicinmybrain\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/637\"\u003epydantic/pydantic-settings#637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/704\"\u003epydantic/pydantic-settings#704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.12 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/705\"\u003epydantic/pydantic-settings#705\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/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/688\"\u003epydantic/pydantic-settings#688\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.11.0...v2.12.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.11.0...v2.12.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.11.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCLI Serialize Support by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/643\"\u003epydantic/pydantic-settings#643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInspect type aliases to determine if an annotation is complex by \u003ca href=\"https://github.com/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/644\"\u003epydantic/pydantic-settings#644\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;fix: Respect 'cli_parse_args' from model_config with settings_customise_sources (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/611\"\u003e#611\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/655\"\u003epydantic/pydantic-settings#655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove parsing of command line arguments from \u003ccode\u003eCliSettingsSource.__init__\u003c/code\u003e. by \u003ca href=\"https://github.com/trygve-baerland\"\u003e\u003ccode\u003e@​trygve-baerland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/656\"\u003epydantic/pydantic-settings#656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eturn off allow_abbrev on subparsers by \u003ca href=\"https://github.com/mroch\"\u003e\u003ccode\u003e@​mroch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/658\"\u003epydantic/pydantic-settings#658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI Serialization Fixes by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/649\"\u003epydantic/pydantic-settings#649\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PydanticModel type checking. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/659\"\u003epydantic/pydantic-settings#659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid env_prefix falling back to env vars without prefix by \u003ca href=\"https://github.com/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/648\"\u003epydantic/pydantic-settings#648\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWarn if model_config sets unused keys for missing settings sources by \u003ca href=\"https://github.com/HomerusJa\"\u003e\u003ccode\u003e@​HomerusJa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/663\"\u003epydantic/pydantic-settings#663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncluded endpoint_url kwarg in AWSSecretsManagerSettingsSource class by \u003ca href=\"https://github.com/adrianohrl\"\u003e\u003ccode\u003e@​adrianohrl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/664\"\u003epydantic/pydantic-settings#664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo (\u0026quot;Accesing\u0026quot;) in the \u0026quot;Adding sources\u0026quot; docs by \u003ca href=\"https://github.com/deepyaman\"\u003e\u003ccode\u003e@​deepyaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/668\"\u003epydantic/pydantic-settings#668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI Windows Path Fix by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/669\"\u003epydantic/pydantic-settings#669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCli root model support by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/677\"\u003epydantic/pydantic-settings#677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSnake case conversion in Azure Key Vault by \u003ca href=\"https://github.com/AndreuCodina\"\u003e\u003ccode\u003e@​AndreuCodina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/680\"\u003epydantic/pydantic-settings#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eInitSettingsSource\u003c/code\u003e resolution deterministic by \u003ca href=\"https://github.com/enrico-stauss\"\u003e\u003ccode\u003e@​enrico-stauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/681\"\u003epydantic/pydantic-settings#681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate deps by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/683\"\u003epydantic/pydantic-settings#683\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/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/644\"\u003epydantic/pydantic-settings#644\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/trygve-baerland\"\u003e\u003ccode\u003e@​trygve-baerland\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/656\"\u003epydantic/pydantic-settings#656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mroch\"\u003e\u003ccode\u003e@​mroch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/658\"\u003epydantic/pydantic-settings#658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HomerusJa\"\u003e\u003ccode\u003e@​HomerusJa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/663\"\u003epydantic/pydantic-settings#663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adrianohrl\"\u003e\u003ccode\u003e@​adrianohrl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/664\"\u003epydantic/pydantic-settings#664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/deepyaman\"\u003e\u003ccode\u003e@​deepyaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/668\"\u003epydantic/pydantic-settings#668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enrico-stauss\"\u003e\u003ccode\u003e@​enrico-stauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/681\"\u003epydantic/pydantic-settings#681\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/2.10.1...v2.11.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/2.10.1...v2.11.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.10.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/584983d253a0fac4dfb294d1e6f9ef188add468b\"\u003e\u003ccode\u003e584983d\u003c/code\u003e\u003c/a\u003e Prepare release 2.12 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/705\"\u003e#705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/6b4d87e77698476433031c0056ce71aa4f4a7c4e\"\u003e\u003ccode\u003e6b4d87e\u003c/code\u003e\u003c/a\u003e Add Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/02de5b622b8648404aa792df01599aa1179c3aa7\"\u003e\u003ccode\u003e02de5b6\u003c/code\u003e\u003c/a\u003e Adapt test_protected_namespace_defaults for dev. Pydantic (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/637\"\u003e#637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4239ea460a5c465a4ce908c52e9606549b38fa98\"\u003e\u003ccode\u003e4239ea4\u003c/code\u003e\u003c/a\u003e Drop Python3.9 support (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/699\"\u003e#699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/5008c694f684f88fd310f476871ec021426e98d7\"\u003e\u003ccode\u003e5008c69\u003c/code\u003e\u003c/a\u003e Restore init kwarg names before returning final state dictionary. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/700\"\u003e#700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4433101fef6770d3fc0844846f7f3837bfec3b10\"\u003e\u003ccode\u003e4433101\u003c/code\u003e\u003c/a\u003e Coerce env vars if strict is True. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4d2ebfd543e6011f6b71a99042007adf7e613ae9\"\u003e\u003ccode\u003e4d2ebfd\u003c/code\u003e\u003c/a\u003e Strip non-explicit default values. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4a6ffcaeae451199b1873c6709b28aceae7317a7\"\u003e\u003ccode\u003e4a6ffca\u003c/code\u003e\u003c/a\u003e Add NestedSecretsSettings source (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7a6e96ebfc89ddb5b20dfb068c8ed46b6ff18a7f\"\u003e\u003ccode\u003e7a6e96e\u003c/code\u003e\u003c/a\u003e Apply source order: init \u0026gt; env \u0026gt; dotenv \u0026gt; secrets \u0026gt; defaults and pres… (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/68563eddc09856b94ea0ca156dd75040b4e048e4\"\u003e\u003ccode\u003e68563ed\u003c/code\u003e\u003c/a\u003e Support for enum kebab case. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/686\"\u003e#686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.5.2...v2.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlmodel` from 0.0.22 to 0.0.31\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/sqlmodel/releases\"\u003esqlmodel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.31\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Pydantic v1. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1701\"\u003e#1701\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump dirty-equals from 0.9.0 to 0.11. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1649\"\u003e#1649\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.0 to 9.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1690\"\u003e#1690\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.20.1 to 0.21.0. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1694\"\u003e#1694\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📌 Relax \u003ccode\u003eprek\u003c/code\u003e version pin to \u003ccode\u003e\u0026gt;=0.2.24,\u0026lt;1.0.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1698\"\u003e#1698\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.30\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1696\"\u003e#1696\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8 in CI and docs. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1695\"\u003e#1695\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Update pre-commit, generate select on pre-commit, use local Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1697\"\u003e#1697\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1692\"\u003e#1692\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Add pre-commit workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1684\"\u003e#1684\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Simplify tests for code examples, one test file for multiple variants. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1664\"\u003e#1664\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1677\"\u003e#1677\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 6 to 7. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1676\"\u003e#1676\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 4 to 5. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1673\"\u003e#1673\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump markdown-include-variants from 0.0.5 to 0.0.8. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1674\"\u003e#1674\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1675\"\u003e#1675\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.18.2 to 1.19.1. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1679\"\u003e#1679\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.20.0 to 0.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1685\"\u003e#1685\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.8 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1681\"\u003e#1681\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.29\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003ealias\u003c/code\u003e support for Pydantic v2. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1577\"\u003e#1577\u003c/a\u003e by \u003ca href=\"https://github.com/ravishan16\"\u003e\u003ccode\u003e@​ravishan16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.28\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRuntimeError: dictionary changed size during iteration\u003c/code\u003e in \u003ccode\u003esqlmodel_update()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/997\"\u003e#997\u003c/a\u003e by \u003ca href=\"https://github.com/BartSchuurmans\"\u003e\u003ccode\u003e@​BartSchuurmans\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💅 Update CSS to explicitly use emoji font. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1658\"\u003e#1658\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update link to JetBrains Python survey in \u003ccode\u003efeatures.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/sqlmodel/pull/1627\"\u003e#1627\u003c/a\u003e by \u003ca href=\"https://github.com/sparkiegeek\"\u003e\u003ccode\u003e@​sparkiegeek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/sqlmodel/blob/main/docs/release-notes.md\"\u003esqlmodel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.31\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Pydantic v...\n\n_Description has been truncated_","html_url":"https://github.com/ElderEvil/falloutProject/pull/48","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElderEvil%2FfalloutProject/issues/48","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/48/packages"}},{"old_version":"4.9","new_version":"4.9.1","update_type":null,"path":null,"pr_created_at":"2025-12-25T00:21:31.000Z","version_change":"4.9 → 4.9.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":"4.9","new_version":"4.9.1","update_type":null,"path":"/backend","pr_created_at":"2025-12-20T22:38:57.000Z","version_change":"4.9 → 4.9.1","issue":{"uuid":"3750489899","node_id":"PR_kwDONKf2os65-bzP","number":53,"state":"closed","title":"Bump rsa from 4.9 to 4.9.1 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-01-14T02:54:29.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-20T22:38:57.000Z","updated_at":"2026-01-14T02:54:30.000Z","time_to_close":2088932,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [rsa](https://github.com/sybrenstuvel/python-rsa) from 4.9 to 4.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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=rsa\u0026package-manager=pip\u0026previous-version=4.9\u0026new-version=4.9.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/andreineagoe23/monevo/pull/53","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreineagoe23%2Fmonevo/issues/53","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/53/packages"}},{"old_version":"3.1.4","new_version":"4.7","update_type":null,"path":"/buildproapp2/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","pr_created_at":"2025-12-20T11:02:19.000Z","version_change":"3.1.4 → 4.7","issue":{"uuid":"3749949011","node_id":"PR_kwDOQbGCE8658zmy","number":2,"state":"open","title":"chore(deps): bump rsa from 3.1.4 to 4.7 in /buildproapp2/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-20T11:02:19.000Z","updated_at":"2025-12-20T11:03:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"rsa","old_version":"3.1.4","new_version":"4.7","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":"/buildproapp2/google-cloud-sdk/platform/gsutil/gslib/vendored/boto in the pip group across 1 directory","ecosystem":"pip"},"body":"Bumps the pip group with 1 update in the /buildproapp2/google-cloud-sdk/platform/gsutil/gslib/vendored/boto directory: [rsa](https://github.com/sybrenstuvel/python-rsa).\n\nUpdates `rsa` from 3.1.4 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.7 - released 2021-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e:\nCVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption\ncode\u003c/li\u003e\n\u003cli\u003eAdd padding length check as described by PKCS#1 v1.5 (Fixes\n\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReuse of blinding factors to speed up blinding operations.\nFixes \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/162\"\u003e#162\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDeclare \u0026amp; test support for Python 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.4 \u0026amp; 4.6 - released 2020-06-12\u003c/h2\u003e\n\u003cp\u003eVersion 4.4 and 4.6 are almost a re-tagged release of version 4.2. It requires\nPython 3.5+. To avoid older Python installations from trying to upgrade to RSA\n4.4, this is now made explicit in the \u003ccode\u003epython_requires\u003c/code\u003e argument in \u003ccode\u003esetup.py\u003c/code\u003e.\nThere was a mistake releasing 4.4 as \u0026quot;3.5+ only\u0026quot;, which made it necessary to\nretag 4.4 as 4.6 as well.\u003c/p\u003e\n\u003cp\u003eNo functional changes compared to version 4.2.\u003c/p\u003e\n\u003ch2\u003eVersion 4.3 \u0026amp; 4.5 - released 2020-06-12\u003c/h2\u003e\n\u003cp\u003eVersion 4.3 and 4.5 are almost a re-tagged release of version 4.0. It is the\nlast to support Python 2.7. This is now made explicit in the \u003ccode\u003epython_requires\u003c/code\u003e\nargument in \u003ccode\u003esetup.py\u003c/code\u003e. Python 3.4 is not supported by this release. There was a\nmistake releasing 4.4 as \u0026quot;3.5+ only\u0026quot;, which made it necessary to retag 4.3 as\n4.5 as well.\u003c/p\u003e\n\u003cp\u003eTwo security fixes have also been backported, so 4.3 = 4.0 + these two fixes.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChoose blinding factor relatively prime to N. Thanks Christian Heimes for pointing this out.\u003c/li\u003e\n\u003cli\u003eReject cyphertexts (when decrypting) and signatures (when verifying) that have\nbeen modified by prepending zero bytes. This resolves CVE-2020-13757. Thanks\nCarnil for pointing this out.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.2 - released 2020-06-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRolled back the switch to Poetry, and reverted back to using Pipenv + setup.py\nfor dependency management. There apparently is an issue no-binary installs of\npackages build with Poetry. This fixes\n\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/148\"\u003e#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimited SHA3 support to those Python versions (3.6+) that support it natively.\nThe third-party library that adds support for this to Python 3.5 is a binary\npackage, and thus breaks the pure-Python nature of Python-RSA.\nThis should fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/147\"\u003e#147\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/sybrenstuvel/python-rsa/commit/fa3282a47457254385f2313c2eceaad4b06186a4\"\u003e\u003ccode\u003efa3282a\u003c/code\u003e\u003c/a\u003e Bumped version to 4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/a364e82caa4cb1fc51400a8c628fb48867fb4362\"\u003e\u003ccode\u003ea364e82\u003c/code\u003e\u003c/a\u003e Marked version 4.7 as released\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/539c54aada3922757099ce1911a28c46e8e81a10\"\u003e\u003ccode\u003e539c54a\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/170\"\u003e#170\u003c/a\u003e: mistake in examples of documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/b81e3171e9f870892e6b8a894db6d00ecd93f544\"\u003e\u003ccode\u003eb81e317\u003c/code\u003e\u003c/a\u003e Declare support for and test Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/06ec1ea1cc7be6034144bd06f07c35eb9d1b4953\"\u003e\u003ccode\u003e06ec1ea\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/162\"\u003e#162\u003c/a\u003e: Blinding uses slow algorithm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/341e5c4f939988bd472530441b6a02b625a30806\"\u003e\u003ccode\u003e341e5c4\u003c/code\u003e\u003c/a\u003e Directly raise \u003ccode\u003eDecryptionError\u003c/code\u003e when crypto length is bad\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/f254895b02f0cb106f9ccee6d8dc6af1a27f0bd1\"\u003e\u003ccode\u003ef254895\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ebytes.find()\u003c/code\u003e instead of \u003ccode\u003ebytes.index()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/240b0d8910299f970921391ea9737cb64ec09208\"\u003e\u003ccode\u003e240b0d8\u003c/code\u003e\u003c/a\u003e Add link to changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/f878c374086e672e7806fdd18401ec6b71cfa960\"\u003e\u003ccode\u003ef878c37\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/164\"\u003e#164\u003c/a\u003e: Add padding length check as described by PKCS#1 v1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commit/dae8ce0d85478e16f2368b2341632775313d41ed\"\u003e\u003ccode\u003edae8ce0\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/165\"\u003e#165\u003c/a\u003e: CVE-2020-25658 - Bleichenbacher-style timing oracle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/compare/version-3.1.4...version-4.7\"\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=rsa\u0026package-manager=pip\u0026previous-version=3.1.4\u0026new-version=4.7)](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 \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/adrianstanca1/Buildproapp2/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/adrianstanca1/Buildproapp2/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianstanca1%2FBuildproapp2/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"}},{"old_version":"4.9","new_version":"4.9.1","update_type":null,"path":null,"pr_created_at":"2025-12-19T00:24:10.000Z","version_change":"4.9 → 4.9.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":"4.9","new_version":"4.9.1","update_type":null,"path":null,"pr_created_at":"2025-12-18T20:59:18.000Z","version_change":"4.9 → 4.9.1","issue":{"uuid":"3744831011","node_id":"PR_kwDOQrTdT865rw7T","number":135,"state":"open","title":"Bump rsa from 4.9 to 4.9.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":"2025-12-18T20:59:18.000Z","updated_at":"2025-12-18T20:59:19.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"rsa","old_version":"4.9","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"}],"path":null,"ecosystem":"pip"},"body":"Bumps [rsa](https://github.com/sybrenstuvel/python-rsa) from 4.9 to 4.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/blob/main/CHANGELOG.md\"\u003ersa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePython-RSA changelog\u003c/h1\u003e\n\u003ch2\u003eVersion 4.10 - in development\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.6 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/209\"\u003e#209\u003c/a\u003e)\nand declare support for 3.11 (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/pull/208\"\u003e#208\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest\u003c/code\u003e dependency to fix a \u003ca href=\"https://redirect.github.com/pytest-dev/py/issues/287#issuecomment-1290407715\"\u003esecurity issue\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003epytest-cov\u003c/code\u003e as well, for good measure.\u003c/li\u003e\n\u003cli\u003eUpgrade MyPy (\u003ca href=\"https://redirect.github.com/sybrenstuvel/python-rsa/issues/211\"\u003e#211\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sybrenstuvel/python-rsa/commits\"\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=rsa\u0026package-manager=pip\u0026previous-version=4.9\u0026new-version=4.9.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/a-schur/harmon/pull/135","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/a-schur%2Fharmon/issues/135","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/135/packages"}},{"old_version":"4.7.2","new_version":"4.9.1","update_type":"minor","path":null,"pr_created_at":"2025-12-15T04:23:43.000Z","version_change":"4.7.2 → 4.9.1","issue":{"uuid":"3728635949","node_id":"PR_kwDOMftbFc641A6J","number":187,"state":"closed","title":"Bump the py-updates group across 1 directory with 78 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-12T04:36:49.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-15T04:23:43.000Z","updated_at":"2026-01-12T04:36:50.000Z","time_to_close":2419986,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":78,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.43.15","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.36.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.9","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.9","repository_url":"https://github.com/boto/botocore"},{"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":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.3","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.3.5","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"22.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.9","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.9","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.18","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.0","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.3","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.30.0","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.9.25","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.16"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.0","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.38.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 78 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.43.15` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.36.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.9` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.9` |\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| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.3` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.3.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `22.0.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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.2` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.9` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.9` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.18` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.0` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.9` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.30.0` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20250913` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.9.25` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.2.5` |\n| ruamel-yaml | `0.18.10` | `0.18.16` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.0` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.0` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.50.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.38.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n\n\nUpdates `awscli` from 1.40.17 to 1.43.15\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/7e0151487fe30379b8940f3f7438c9d36d8b0f26\"\u003e\u003ccode\u003e7e01514\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/72f90311e9cffa76ab1de14f261451127644e363\"\u003e\u003ccode\u003e72f9031\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3edc753acee17c4907518c3b519cb50ce8de0ee7\"\u003e\u003ccode\u003e3edc753\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/70bb5d4161f5aaf56b4b4250160a49b425147484\"\u003e\u003ccode\u003e70bb5d4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/7b40bb1b7eee75835a29888583bf10f9571a6bb1\"\u003e\u003ccode\u003e7b40bb1\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.14' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/acfdde6f0c0731f8b861788988f0a42504cbcdd9\"\u003e\u003ccode\u003eacfdde6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/74dbdfdc03068804f909da20b8b9e546a3fc3bc3\"\u003e\u003ccode\u003e74dbdfd\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/f1a04b95e91bec439313be76ac1a9461b5a8de49\"\u003e\u003ccode\u003ef1a04b9\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Implement upgrade debug mode\u0026quot; (\u003ca href=\"https://redirect.github.com/aws/aws-cli/issues/9913\"\u003e#9913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c21885e81e3af853e68ebb5561d0fbb65eddecb9\"\u003e\u003ccode\u003ec21885e\u003c/code\u003e\u003c/a\u003e Implement upgrade debug mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c3f45696e1bef325dec4bcacf633ad5e12e93ae1\"\u003e\u003ccode\u003ec3f4569\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.43.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.36.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.36.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTune partitioned sink_parquet cloud performance (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25687\"\u003e#25687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow creation of \u003ccode\u003eObject\u003c/code\u003e literal (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25690\"\u003e#25690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't collect schema in SQL union processing (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25675\"\u003e#25675\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon't invalidate node in cluster-with-columns (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25714\"\u003e#25714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove \u003ccode\u003eboto3\u003c/code\u003e extra from s3fs in dev requirements (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25667\"\u003e#25667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing type stubs for \u003ccode\u003ebin_slice\u003c/code\u003e, \u003ccode\u003ebin_head\u003c/code\u003e, and \u003ccode\u003ebin_tail\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25697\"\u003e#25697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBinary slice methods missing from Series and docs (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25683\"\u003e#25683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMix-up of variable_name/value_name in unpivot (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25685\"\u003e#25685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInvalid usage of \u003ccode\u003edrop_first\u003c/code\u003e in \u003ccode\u003eto_dummies\u003c/code\u003e when nulls present (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25435\"\u003e#25435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typos in Excel and Pandas migration guides (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25709\"\u003e#25709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u0026quot;right\u0026quot; to \u003ccode\u003ehow\u003c/code\u003e options in \u003ccode\u003ejoin()\u003c/code\u003e docstrings (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25678\"\u003e#25678\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove Object \u003ccode\u003elit\u003c/code\u003e fix earlier in the function (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25713\"\u003e#25713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused decimal file (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25701\"\u003e#25701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove \u003ccode\u003eboto3\u003c/code\u003e extra from s3fs in dev requirements (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25667\"\u003e#25667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade to latest version of \u003ccode\u003esqlparser-rs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate slab to version without RUSTSEC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25686\"\u003e#25686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25684\"\u003e#25684\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/AndreaBozzo\"\u003e\u003ccode\u003e@​AndreaBozzo\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Kevin-Patyk\"\u003e\u003ccode\u003e@​Kevin-Patyk\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/dsprenkels\"\u003e\u003ccode\u003e@​dsprenkels\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/jamesfricker\"\u003e\u003ccode\u003e@​jamesfricker\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/mcrumiller\"\u003e\u003ccode\u003e@​mcrumiller\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.36.0\u003c/h2\u003e\n\u003cp\u003e🏆 Highlights\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Extension types (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25322\"\u003e#25322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SQL support for the QUALIFY clause (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25652\"\u003e#25652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd bin.slice(), bin.head(), and bin.tail() methods (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25647\"\u003e#25647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd SQL syntax support for CROSS JOIN UNNEST(col) (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25623\"\u003e#25623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd separate env var to log tracked metrics (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25586\"\u003e#25586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpose fields for generating physical plan visualization data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25562\"\u003e#25562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow pl.Object in pivot value (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25533\"\u003e#25533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor improvement for as_struct repr (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25529\"\u003e#25529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTemporal quantile in rolling context (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25479\"\u003e#25479\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/2a151c10fa76790711c2f75e6d012dd69c627ddd\"\u003e\u003ccode\u003e2a151c1\u003c/code\u003e\u003c/a\u003e Python Polars 1.36.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25715\"\u003e#25715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b394b2d15e502e46de0b817d4033b4cb5731a765\"\u003e\u003ccode\u003eb394b2d\u003c/code\u003e\u003c/a\u003e fix: Don't invalidate node in cluster-with-columns (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25714\"\u003e#25714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e5baff43073c8024ffa0e0fce0fc45be5f3cb635\"\u003e\u003ccode\u003ee5baff4\u003c/code\u003e\u003c/a\u003e refactor: Move Object \u003ccode\u003elit\u003c/code\u003e fix earlier in the function (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25713\"\u003e#25713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/ee79be36ef280975c332b5c51f13d14f10349bd0\"\u003e\u003ccode\u003eee79be3\u003c/code\u003e\u003c/a\u003e docs: Fix typos in Excel and Pandas migration guides (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25709\"\u003e#25709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/0150a1849d25c04ac35fe469228d358c9388b4c0\"\u003e\u003ccode\u003e0150a18\u003c/code\u003e\u003c/a\u003e chore: Remove unused decimal file (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25701\"\u003e#25701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/9dd724b647a77159477318077a03c9ece10e31b3\"\u003e\u003ccode\u003e9dd724b\u003c/code\u003e\u003c/a\u003e fix(python): Remove \u003ccode\u003eboto3\u003c/code\u003e extra from s3fs (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25667\"\u003e#25667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/d8cdf895f9b9a1110fa053400d3c16dd5b241063\"\u003e\u003ccode\u003ed8cdf89\u003c/code\u003e\u003c/a\u003e feat: Allow creation of \u003ccode\u003eObject\u003c/code\u003e literal (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25690\"\u003e#25690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/30699577be723eccedb30779f73076b7f22b6fd5\"\u003e\u003ccode\u003e3069957\u003c/code\u003e\u003c/a\u003e fix(python): Add missing type stubs for \u003ccode\u003ebin_slice\u003c/code\u003e, \u003ccode\u003ebin_head\u003c/code\u003e, and `bin_tai...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/729e5750e9d5005da953a83828366570209ba05f\"\u003e\u003ccode\u003e729e575\u003c/code\u003e\u003c/a\u003e chore: Upgrade to latest version of \u003ccode\u003esqlparser-rs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b83a2595b39deebafae13ba7d0b0fcc28f971e98\"\u003e\u003ccode\u003eb83a259\u003c/code\u003e\u003c/a\u003e chore: Update slab to version without RUSTSEC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25686\"\u003e#25686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.36.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.9\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/70183cf04d296effa96d26f65daea72f808d0b2b\"\u003e\u003ccode\u003e70183cf\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/02ef27f5aa6a77df183e48cba4814479b5b5d7bc\"\u003e\u003ccode\u003e02ef27f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b4821c1cb31d0eb4c6130e85dc4179789888a8e8\"\u003e\u003ccode\u003eb4821c1\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8c12c9dc72660013e2f52510eab3b3cd62d7ddeb\"\u003e\u003ccode\u003e8c12c9d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.8'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/39f484c1d95e4751a9953d44bad534ec7030c1a8\"\u003e\u003ccode\u003e39f484c\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.8' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/3c5c225507c6a753b1596d48c5e9f9586eb2729a\"\u003e\u003ccode\u003e3c5c225\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d8c15ca79b64aeed2f38123a2c20783721db1bdb\"\u003e\u003ccode\u003ed8c15ca\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e70c5a2b505631dc167de946d4717dcf7b422a67\"\u003e\u003ccode\u003ee70c5a2\u003c/code\u003e\u003c/a\u003e Use f-strings instead of string concatenation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4675\"\u003e#4675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2295d41097ef3fbdef837df4118ec85c04d48f6e\"\u003e\u003ccode\u003e2295d41\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.7'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f2bd57cd0c3e22a5ca7eefbfca358de247ec8b57\"\u003e\u003ccode\u003ef2bd57c\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.7' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.9\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fefef10ea7908e50bb9a7e5ec1969cc5d745d9d5\"\u003e\u003ccode\u003efefef10\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/2bdbadbfc0bbd216359c329f0ce082ef383b5b26\"\u003e\u003ccode\u003e2bdbadb\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fd387744345f7e56f7f06845031e73cd21b34ef9\"\u003e\u003ccode\u003efd38774\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/bd5f2d844a8ca5cad817820944df4f45184fa0ea\"\u003e\u003ccode\u003ebd5f2d8\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/517a891083b3fbf4040041ee42a82e67e67e8c0a\"\u003e\u003ccode\u003e517a891\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.8'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/02205a47fcd51a60ae453c1da4eefa8f509b824b\"\u003e\u003ccode\u003e02205a4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.8' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6290d04346193a26531d806bb6a8613a23d3dd35\"\u003e\u003ccode\u003e6290d04\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/e635637d039e79dadb6a78fdf78ffb995a179d65\"\u003e\u003ccode\u003ee635637\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/323d375948254b39e6fc94a68c1d7bb3a88c553a\"\u003e\u003ccode\u003e323d375\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/a9d520e8c7d365dde025c4b7a12d4e4ec4102e57\"\u003e\u003ccode\u003ea9d520e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.7'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.9\"\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 `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.3.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.5 (Nov 16, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.3.5 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.3.5 release is a patch release split between a number of maintenance\nupdates and bug fixes. This release supports Python versions 3.11-3.14.\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 10 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAaron Kollasch +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMatti Picus\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRafael Laboissière +\u003c/li\u003e\n\u003cli\u003eSayed Awad\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eWarren Weckesser\u003c/li\u003e\n\u003cli\u003eYasir Ashfaq +\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 16 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/29979\"\u003e#29979\u003c/a\u003e: MAINT: Prepare 2.3.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30026\"\u003e#30026\u003c/a\u003e: SIMD, BLD: Backport FPMATH mode on x86-32 and filter successor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30029\"\u003e#30029\u003c/a\u003e: MAINT: Backport write_release.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30041\"\u003e#30041\u003c/a\u003e: TYP: Various typing updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30059\"\u003e#30059\u003c/a\u003e: BUG: Fix np.strings.slice if stop=None or start and stop \u0026gt;= len...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30063\"\u003e#30063\u003c/a\u003e: BUG: Fix np.strings.slice if start \u0026gt; stop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30076\"\u003e#30076\u003c/a\u003e: BUG: avoid negating INT_MIN in PyArray_Round implementation (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30071\"\u003e#30071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30090\"\u003e#30090\u003c/a\u003e: BUG: Fix resize when it contains references (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/29970\"\u003e#29970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30129\"\u003e#30129\u003c/a\u003e: BLD: update scipy-openblas, use -Dpkg_config_path (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30049\"\u003e#30049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30130\"\u003e#30130\u003c/a\u003e: BUG: Avoid compilation error of wrapper file generated with SWIG...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30157\"\u003e#30157\u003c/a\u003e: BLD: use scipy-openblas 0.3.30.7 (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30132\"\u003e#30132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30158\"\u003e#30158\u003c/a\u003e: DOC: Remove nonexistent \u003ccode\u003eorder\u003c/code\u003e parameter docs of \u003ccode\u003ema.asanyarray\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30185\"\u003e#30185\u003c/a\u003e: BUG: Fix check of PyMem_Calloc return value. (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30176\"\u003e#30176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30217\"\u003e#30217\u003c/a\u003e: DOC: fix links for newly rebuilt numpy-tutorials site\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30218\"\u003e#30218\u003c/a\u003e: BUG: Fix build on s390x with clang (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30214\"\u003e#30214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30237\"\u003e#30237\u003c/a\u003e: ENH: Make FPE blas check a runtime check for all apple arm systems\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.4 (Oct 15,  2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.3.4 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.3.4 release is a patch release split between a number of maintenance\nupdates and bug fixes. This release supports Python versions 3.11-3.14. This\nrelease is based on Python 3.14.0 final.\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/numpy/numpy/commit/c3d60fc8393f3ca3306b8ce8b6453d43737e3d90\"\u003e\u003ccode\u003ec3d60fc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30238\"\u003e#30238\u003c/a\u003e from charris/prepare-2.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/11451fa35d49d8c809cdef87106417833bdacfbe\"\u003e\u003ccode\u003e11451fa\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.3.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/eab5bd47df62782edceccf4cf99112851f7a8975\"\u003e\u003ccode\u003eeab5bd4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30237\"\u003e#30237\u003c/a\u003e from charris/backport-30102\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7cea31aa6255994bcd17b3ee2f6dbf671eaa9598\"\u003e\u003ccode\u003e7cea31a\u003c/code\u003e\u003c/a\u003e Fixup merge of multiarraymodule.c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b8981736060011506e497c5bca24a75c5bddee39\"\u003e\u003ccode\u003eb898173\u003c/code\u003e\u003c/a\u003e Update numpy/_core/src/common/blas_utils.h\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/f755483d4858839044f159db7dacdf1818912393\"\u003e\u003ccode\u003ef755483\u003c/code\u003e\u003c/a\u003e Report FPE ignoring in matmul in \u003ccode\u003eshow_runtime()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/c47116f3858a2814222a7cd7b15ebc5eed9df4d0\"\u003e\u003ccode\u003ec47116f\u003c/code\u003e\u003c/a\u003e Move test to Python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/bd7b93f105ddb3b3f200ceb6fb4516e7e87f3a81\"\u003e\u003ccode\u003ebd7b93f\u003c/code\u003e\u003c/a\u003e ooops, needs to be a calloc of course.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/83a1517159a2e33d05113e3341afb1df83ba615d\"\u003e\u003ccode\u003e83a1517\u003c/code\u003e\u003c/a\u003e Guard for HAVE_CB...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/187","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/187","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/187/packages"}},{"old_version":"4.7.2","new_version":"4.9.1","update_type":"minor","path":null,"pr_created_at":"2025-12-08T04:28:42.000Z","version_change":"4.7.2 → 4.9.1","issue":{"uuid":"3704597719","node_id":"PR_kwDOMftbFc63lcFZ","number":186,"state":"closed","title":"Bump the py-updates group across 1 directory with 77 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-15T04:19:04.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-08T04:28:42.000Z","updated_at":"2025-12-15T04:19:06.000Z","time_to_close":604222,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":77,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.43.10","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.35.2","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.4","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.4","repository_url":"https://github.com/boto/botocore"},{"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":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.3","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.3.5","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"22.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.4","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.4","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.12.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.18","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.0","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.3","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.8","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.29.2","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.15.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.9.25","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.7","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.16"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.5.2","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.38.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 77 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.43.10` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.35.2` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.4` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.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| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.3` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.3.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `22.0.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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.4` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.12.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.18` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.0` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.8` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.29.2` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20250913` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.15.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.0` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.9.25` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.7` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.2.5` |\n| ruamel-yaml | `0.18.10` | `0.18.16` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.5.2` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.0` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.50.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.38.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n\n\nUpdates `awscli` from 1.40.17 to 1.43.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3499274cba0231d38086cb4389f4fda3ca3cbf2c\"\u003e\u003ccode\u003e3499274\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.10'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/0641f4e15bcd81c6321cf8289e2ef988143b4f31\"\u003e\u003ccode\u003e0641f4e\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/0621f58add8d91f0069e813b173624f738991093\"\u003e\u003ccode\u003e0621f58\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/f2ee76ccc9c8bff9e079118923be05df483e0d01\"\u003e\u003ccode\u003ef2ee76c\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/69cf052063a23eb4172bc1ecb338922227336437\"\u003e\u003ccode\u003e69cf052\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.9' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/794d13709a2f6fd64231ae739177d8dc18e7bfb3\"\u003e\u003ccode\u003e794d137\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/90a22b9417f34b8399a3086798a1c3f55f0ae3b2\"\u003e\u003ccode\u003e90a22b9\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/ece1daabc883acbc7156caaeb5faf883e5a87166\"\u003e\u003ccode\u003eece1daa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.8'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/f4787fad94308cadbe8a41b78b509069d81dbeda\"\u003e\u003ccode\u003ef4787fa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.8' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/06b7bfebc5b604772f8bef8e7f958bb78916be18\"\u003e\u003ccode\u003e06b7bfe\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.8\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.43.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.35.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.35.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003edrop_nans()\u003c/code\u003e result when used in \u003ccode\u003egroup_by()\u003c/code\u003e / \u003ccode\u003eover()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/pull/25146\"\u003epola-rs/polars#25146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling \u003ccode\u003eNull\u003c/code\u003e dtype in \u003ccode\u003eApplyExpr\u003c/code\u003e on \u003ccode\u003egroup_by\u003c/code\u003e(\u003ca href=\"https://redirect.github.com/pola-rs/polars/pull/25077\"\u003epola-rs/polars#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix assertion panic on \u003ccode\u003egroup_by\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/pull/25179\"\u003epola-rs/polars#25179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Wide-table join performance regression (\u003ca href=\"https://redirect.github.com/pola-rs/polars/pull/25222\"\u003epola-rs/polars#25222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/coastalwhite\"\u003e\u003ccode\u003e@​coastalwhite\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.35.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon't recompute full rolling moment window when NaNs/nulls leave the window (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25078\"\u003e#25078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip filtering scan IR if no paths were filtered (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25037\"\u003e#25037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ipc stream read performance (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/24671\"\u003e#24671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport BYTE_ARRAY backed Decimals in Parquet (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25076\"\u003e#25076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eglimpse\u003c/code\u003e to return a \u003ccode\u003eDataFrame\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/24803\"\u003e#24803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eallow_empty\u003c/code\u003e flag to \u003ccode\u003eitem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25048\"\u003e#25048\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eSQL\u003c/code\u003e interface should use logical, not bitwise, behaviour for unary \u0026quot;NOT\u0026quot; operator (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25091\"\u003e#25091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic if scan predicate produces 0 length mask (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25089\"\u003e#25089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure SQL table alias resolution checks against CTE aliases on fallback (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25071\"\u003e#25071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePanic in \u003ccode\u003egroup_by_dynamic\u003c/code\u003e with \u003ccode\u003egroup_by\u003c/code\u003e and multiple chunks (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25075\"\u003e#25075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor improvement to internal \u003ccode\u003eis_pycapsule\u003c/code\u003e utility function (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25073\"\u003e#25073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic when using struct field as join key (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25059\"\u003e#25059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow broadcast in \u003ccode\u003egroup_by\u003c/code\u003e for \u003ccode\u003eApplyExpr\u003c/code\u003e and \u003ccode\u003eBinaryExpr\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25053\"\u003e#25053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix field metadata for nested categorical PyCapsule export (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25052\"\u003e#25052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock predicate pushdown when \u003ccode\u003egroup_by\u003c/code\u003e key values are changed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25032\"\u003e#25032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGroup-By aggregation problems caused by \u003ccode\u003eAmortSeries\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25043\"\u003e#25043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't push down predicates passed inserted cache nodes (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25042\"\u003e#25042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow for negative time in \u003ccode\u003egroup_by_dynamic\u003c/code\u003e iterator (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25041\"\u003e#25041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typo in public dataset URL (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable recursive CSPE for now (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange group length mismatch error to \u003ccode\u003eShapeError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25004\"\u003e#25004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate toolchain (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25007\"\u003e#25007\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/Kevin-Patyk\"\u003e\u003ccode\u003e@​Kevin-Patyk\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Liyixin95\"\u003e\u003ccode\u003e@​Liyixin95\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/coastalwhite\"\u003e\u003ccode\u003e@​coastalwhite\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/r-brink\"\u003e\u003ccode\u003e@​r-brink\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/stijnherfst\"\u003e\u003ccode\u003e@​stijnherfst\u003c/code\u003e\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/pola-rs/polars/commit/c5f0f25b2ed6498dd47d3ec619ef3a1a90c0788b\"\u003e\u003ccode\u003ec5f0f25\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/29dc1db9cc3d9c2209021dc423bcbff72958bb18\"\u003e\u003ccode\u003e29dc1db\u003c/code\u003e\u003c/a\u003e fix: Wide-table join performance regression (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25222\"\u003e#25222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/fbd57cdf2b82d5575205ef8aa14c0d96f29c002a\"\u003e\u003ccode\u003efbd57cd\u003c/code\u003e\u003c/a\u003e fix: Fix assertion panic on \u003ccode\u003egroup_by\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25179\"\u003e#25179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/8abe6ef5f4938f6bb2f010a24f7d361138c82895\"\u003e\u003ccode\u003e8abe6ef\u003c/code\u003e\u003c/a\u003e fix: Fix handling \u003ccode\u003eNull\u003c/code\u003e dtype in \u003ccode\u003eApplyExpr\u003c/code\u003e on \u003ccode\u003egroup_by\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/c19e4c07fc66776f1826a0251f118a2ad4bb3047\"\u003e\u003ccode\u003ec19e4c0\u003c/code\u003e\u003c/a\u003e fix: Invert \u003ccode\u003edrop_nans\u003c/code\u003e filtering in group-by context (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25146\"\u003e#25146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/a99ad3495d0b4bb71a956eb3ab5e23595df756db\"\u003e\u003ccode\u003ea99ad34\u003c/code\u003e\u003c/a\u003e fix: The \u003ccode\u003eSQL\u003c/code\u003e interface should use logical, not bitwise, behaviour for unary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/84a0feea2790c6d2ed5be2661409230c1ba9eb00\"\u003e\u003ccode\u003e84a0fee\u003c/code\u003e\u003c/a\u003e Python Polars 1.35.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25090\"\u003e#25090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b9e313641cd7546d4f29ed93dde0cd3b74e799c2\"\u003e\u003ccode\u003eb9e3136\u003c/code\u003e\u003c/a\u003e refactor(rust): Remove old join projection pushdown logic (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25088\"\u003e#25088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/7b423b6d6d8074826ef950c33a6931f78bc4d952\"\u003e\u003ccode\u003e7b423b6\u003c/code\u003e\u003c/a\u003e fix: Fix panic if scan predicate produces 0 length mask (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25089\"\u003e#25089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/ce396f450cc261c7b34bd7f00408fc9152eb6d35\"\u003e\u003ccode\u003ece396f4\u003c/code\u003e\u003c/a\u003e refactor: Disable recursive CSPE for now (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.35.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.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/87d85be3865d8f8de7df2188032fb5ebad5883a9\"\u003e\u003ccode\u003e87d85be\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.4'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2ed62e3c85f8331f532918f54828ed4e03813788\"\u003e\u003ccode\u003e2ed62e3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/7df80a3d6ae16b2c311732b8a67ad6c7ca9b0cd1\"\u003e\u003ccode\u003e7df80a3\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/347117552e90ab6fc8a3e6a459f0a00ec0ca0a48\"\u003e\u003ccode\u003e3471175\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.3'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dfb22ff6eccbd6a07ef68304cc36198e39260618\"\u003e\u003ccode\u003edfb22ff\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.3' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2e3d1258ad9cb30f38d3c54b1b5e847b83a2d13b\"\u003e\u003ccode\u003e2e3d125\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/04ebd3cbea961c39ea1fea5edfd24442d299eb1d\"\u003e\u003ccode\u003e04ebd3c\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/cc95ab6caa73634e01a03c82f310d002a5f3e71d\"\u003e\u003ccode\u003ecc95ab6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.2'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/743b8e411a11015a0a0ee584cd0f3b947687a666\"\u003e\u003ccode\u003e743b8e4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.2' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8f7ba800ea3e2c252b2d9ed4abd4f00309a79511\"\u003e\u003ccode\u003e8f7ba80\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05bdcecb8de077dc0c3551c700243f46f7672848\"\u003e\u003ccode\u003e05bdcec\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.4'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b04193bd48846f03294d06143304576139509982\"\u003e\u003ccode\u003eb04193b\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6d8692f79e641d6529458277bb20c504c17c3eca\"\u003e\u003ccode\u003e6d8692f\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/4e2bde0cb6044935ec0c0bcf022cd32b9c68289e\"\u003e\u003ccode\u003e4e2bde0\u003c/code\u003e\u003c/a\u003e Upgrade awscrt to 0.29.2 (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3608\"\u003e#3608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/c57744ce74370df9ae48d68ce96c213dce94563f\"\u003e\u003ccode\u003ec57744c\u003c/code\u003e\u003c/a\u003e Add retries to handle IAM eventual consistency issues (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3600\"\u003e#3600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b71ae76eee8dd1b084d038b5113bd29b8720f708\"\u003e\u003ccode\u003eb71ae76\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.3'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/220c0b020df8c80078b44fe1227c3bc7b7f24004\"\u003e\u003ccode\u003e220c0b0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.3' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/ac07545e42460b00e7b624161b422b8b7ce4eeda\"\u003e\u003ccode\u003eac07545\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/68fc097d76eec12c4e64c0478e99f76bdee90226\"\u003e\u003ccode\u003e68fc097\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b2877967b7e851d639e7bfa56ad2c6d9ea35b4ad\"\u003e\u003ccode\u003eb287796\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.2'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.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 `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.3.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.5 (Nov 16, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.3.5 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.3.5 release is a patch release split between a number of maintenance\nupdates and bug fixes. This release supports Python versions 3.11-3.14.\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 10 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAaron Kollasch +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMatti Picus\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRafael Laboissière +\u003c/li\u003e\n\u003cli\u003eSayed Awad\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eWarren Weckesser\u003c/li\u003e\n\u003cli\u003eYasir Ashfaq +\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 16 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/29979\"\u003e#29979\u003c/a\u003e: MAINT: Prepare 2.3.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30026\"\u003e#30026\u003c/a\u003e: SIMD, BLD: Backport FPMATH mode on x86-32 and filter successor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30029\"\u003e#30029\u003c/a\u003e: MAINT: Backport write_release.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30041\"\u003e#30041\u003c/a\u003e: TYP: Various typing updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30059\"\u003e#30059\u003c/a\u003e: BUG: Fix np.strings.slice if stop=None or start and stop \u0026gt;= len...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30063\"\u003e#30063\u003c/a\u003e: BUG: Fix np.strings.slice if start \u0026gt; stop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30076\"\u003e#30076\u003c/a\u003e: BUG: avoid negating INT_MIN in PyArray_Round implementation (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30071\"\u003e#30071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30090\"\u003e#30090\u003c/a\u003e: BUG: Fix resize when it contains references (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/29970\"\u003e#29970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30129\"\u003e#30129\u003c/a\u003e: BLD: update scipy-openblas, use -Dpkg_config_path (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30049\"\u003e#30049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30130\"\u003e#30130\u003c/a\u003e: BUG: Avoid compilation error of wrapper file generated with SWIG...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30157\"\u003e#30157\u003c/a\u003e: BLD: use scipy-openblas 0.3.30.7 (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30132\"\u003e#30132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30158\"\u003e#30158\u003c/a\u003e: DOC: Remove nonexistent \u003ccode\u003eorder\u003c/code\u003e parameter docs of \u003ccode\u003ema.asanyarray\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30185\"\u003e#30185\u003c/a\u003e: BUG: Fix check of PyMem_Calloc return value. (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30176\"\u003e#30176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30217\"\u003e#30217\u003c/a\u003e: DOC: fix links for newly rebuilt numpy-tutorials site\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30218\"\u003e#30218\u003c/a\u003e: BUG: Fix build on s390x with clang (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30214\"\u003e#30214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30237\"\u003e#30237\u003c/a\u003e: ENH: Make FPE blas check a runtime check for all apple arm systems\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.4 (Oct 15,  2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.3.4 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.3.4 release is a patch release split between a number of maintenance\nupdates and bug fixes. This release supports Python versions 3.11-3.14. This\nrelease is based on Python 3.14.0 final.\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/numpy/numpy/commit/c3d60fc8393f3ca3306b8ce8b6453d43737e3d90\"\u003e\u003ccode\u003ec3d60fc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30238\"\u003e#30238\u003c/a\u003e from charris/prepare-2.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/11451fa35d49d8c809cdef87106417833bdacfbe\"\u003e\u003ccode\u003e11451fa\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.3.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/eab5bd47df62782edceccf4cf99112851f7a8975\"\u003e\u003ccode\u003eeab5bd4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30237\"\u003e#30237\u003c/a\u003e from charris/backport-30102\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7cea31aa6255994bcd17b3ee2f6dbf671eaa9598\"\u003e\u003ccode\u003e7cea31a\u003c/code\u003e\u003c/a\u003e Fixup merge of multiarraymodule.c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b8981736060011506e497c5bca24a75c5bddee39\"\u003e\u003ccode\u003eb898173\u003c/code\u003e\u003c/a\u003e Update numpy/_core/src/common/blas_utils.h\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/comm...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/186","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/186","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/186/packages"}},{"old_version":"4.9","new_version":"4.9.1","update_type":null,"path":null,"pr_created_at":"2025-12-01T01:07:54.000Z","version_change":"4.9 → 4.9.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":"4.9","new_version":"4.9.1","update_type":null,"path":null,"pr_created_at":"2025-11-18T00:29:16.000Z","version_change":"4.9 → 4.9.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"}}]}