{"id":58427,"name":"time-machine","ecosystem":"pip","repository_url":"https://github.com/adamchainz/time-machine","issues_count":80,"created_at":"2025-08-05T19:27:49.998Z","updated_at":"2025-08-05T19:27:49.998Z","purl":"pkg:pypi/time-machine","metadata":{"id":2947221,"name":"time-machine","ecosystem":"pypi","description":"Travel through time in your tests.","homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/adamchainz/time-machine","keywords_array":["date","datetime","mock","test","testing","tests","time","warp"],"namespace":null,"versions_count":34,"first_release_published_at":"2020-05-04T10:59:18.000Z","latest_release_published_at":"2025-08-05T15:18:42.000Z","latest_release_number":"2.17.0","last_synced_at":"2025-08-06T07:01:11.307Z","created_at":"2022-04-10T12:50:43.596Z","updated_at":"2025-08-06T07:01:11.638Z","registry_url":"https://pypi.org/project/time-machine/","install_command":"pip install time-machine --index-url https://pypi.org/simple","documentation_url":"https://time-machine.readthedocs.io/","metadata":{"funding":"https://adamj.eu/books/","documentation":"https://time-machine.readthedocs.io/","classifiers":["Development Status :: 5 - Production/Stable","Framework :: Pytest","Intended Audience :: Developers","Natural Language :: English","Operating System :: OS Independent","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.14","Programming Language :: Python :: 3.9","Typing :: Typed"],"normalized_name":"time-machine"},"repo_metadata":{"id":37941145,"uuid":"259841110","full_name":"adamchainz/time-machine","owner":"adamchainz","description":"Travel through time in your tests.","archived":false,"fork":false,"pushed_at":"2024-10-08T14:09:05.000Z","size":858,"stargazers_count":704,"open_issues_count":15,"forks_count":34,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-10-29T15:11:36.059Z","etag":null,"topics":["python","testing","time"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adamchainz.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"tidelift":"pypi/time-machine","custom":["https://adamj.eu/books/"]}},"created_at":"2020-04-29T06:16:39.000Z","updated_at":"2024-10-29T11:30:32.000Z","dependencies_parsed_at":"2023-02-15T15:31:48.633Z","dependency_job_id":"7c78c68d-11d7-4a8e-8c88-ed0e9c04539e","html_url":"https://github.com/adamchainz/time-machine","commit_stats":{"total_commits":383,"total_committers":14,"mean_commits":"27.357142857142858","dds":"0.19843342036553524","last_synced_commit":"9006ee99022c0207a6476f5c79e154fe57130c3f"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamchainz","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222090776,"owners_count":16929471,"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":"adamchainz","name":"Adam Johnson","uuid":"857609","kind":"user","description":"🦄 @django technical board member \r\n🇬🇧 @djangolondon co-organizer \r\n✍ AWS/Django/Python Author and Consultant","email":"","website":"https://adamj.eu/","location":"London / Lisbon","twitter":"adamchainz","company":"@django, @djangolondon","icon_url":"https://avatars.githubusercontent.com/u/857609?v=4","repositories_count":1290,"last_synced_at":"2024-06-11T15:33:59.125Z","metadata":{"has_sponsors_listing":true,"funding":{"custom":["https://adamj.eu/books/"]}},"html_url":"https://github.com/adamchainz","funding_links":["https://adamj.eu/books/"],"total_stars":13341,"followers":3578,"following":159,"created_at":"2022-11-02T16:22:51.232Z","updated_at":"2024-06-11T15:34:56.845Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamchainz","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamchainz/repositories"},"tags":[{"name":"2.14.1","sha":"cc1716c669a6eba84f639a1c8653e58bc07374ee","kind":"tag","published_at":"2024-03-22T23:14:30.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.14.1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.14.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.14.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.14.1/manifests"},{"name":"2.14.0","sha":"8d4c9c078f00f761a676012ad984e01622c7e9ed","kind":"tag","published_at":"2024-03-03T21:35:19.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.14.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.14.0/manifests"},{"name":"2.13.0","sha":"b31371c4e47aa5c7bc22cd26dd273822e6791607","kind":"tag","published_at":"2023-09-19T13:29:09.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.13.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.13.0/manifests"},{"name":"2.12.0","sha":"f91a4bab684953fa748af0cd107ee3b25f362a86","kind":"commit","published_at":"2023-08-14T08:40:45.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.12.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.12.0/manifests"},{"name":"2.11.0","sha":"5849df2dc1ddc60f4078f5e79c43ef303dde3e43","kind":"commit","published_at":"2023-07-10T15:25:28.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.11.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.11.0/manifests"},{"name":"2.10.0","sha":"6d752420269ce48e3041282fdae2d2901450b79f","kind":"commit","published_at":"2023-06-16T15:22:07.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.10.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.10.0/manifests"},{"name":"2.9.0","sha":"4b635f803b1f79844f65e9bb266a3348fcfd1732","kind":"commit","published_at":"2022-12-31T10:43:04.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.9.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.9.0/manifests"},{"name":"2.8.2","sha":"50dbf2bdd08740640a2b3ffa36ca03b040c51247","kind":"commit","published_at":"2022-09-29T08:43:06.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.8.2","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.8.2/manifests"},{"name":"2.8.1","sha":"90bc960d16999e102b568ab6f8295b87a37d3a49","kind":"commit","published_at":"2022-08-16T09:18:00.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.8.1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.8.1/manifests"},{"name":"2.8.0","sha":"808b9c093371b1cd1b32c3655aadcec0632ff9f5","kind":"commit","published_at":"2022-08-15T15:01:25.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.8.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.8.0/manifests"},{"name":"2.7.1","sha":"cf154be5f668f2328d73c35a5c2ca755a2f7e94d","kind":"commit","published_at":"2022-06-24T07:50:25.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.7.1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.7.1/manifests"},{"name":"2.7.0","sha":"da39cc8fe33461a559cdfe366ed3c39a0d1dc0cf","kind":"commit","published_at":"2022-05-11T15:31:07.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.7.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.7.0/manifests"},{"name":"2.6.0","sha":"d842ba78c8ea14a9e39352f5b791a552c735f594","kind":"commit","published_at":"2022-01-10T17:16:22.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.6.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.6.0/manifests"},{"name":"2.5.0","sha":"16c6297c8cc9b85db75a3063c4df9f1c8cb007f7","kind":"commit","published_at":"2021-12-14T08:20:21.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.5.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.5.0/manifests"},{"name":"2.4.1","sha":"7710b27ac65180787890aa6d2ce4bc4f33164edc","kind":"commit","published_at":"2021-11-27T14:24:20.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.4.1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.4.1/manifests"},{"name":"2.4.0","sha":"34368bc2ec831ac91f2c244ee579b01f563ae3d7","kind":"commit","published_at":"2021-09-01T08:18:32.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.4.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.4.0/manifests"},{"name":"2.3.1","sha":"97558ac00039badd5e792f3415351395190e7b5d","kind":"commit","published_at":"2021-07-13T13:01:21.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.3.1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.3.1/manifests"},{"name":"2.3.0","sha":"ae52e514bc0f21785b82dd2194ffaf5e9af9d568","kind":"commit","published_at":"2021-07-05T15:22:19.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.3.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.3.0/manifests"},{"name":"2.2.0","sha":"904cc33e2e1b853b4f3eeb202433224bac78e5bf","kind":"commit","published_at":"2021-07-02T20:54:01.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.2.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.2.0/manifests"},{"name":"2.1.0","sha":"a9bff572e6c959b00d70d008d9ea181050e7e143","kind":"commit","published_at":"2021-02-19T09:41:43.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.1.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.1.0/manifests"},{"name":"2.0.1","sha":"1c6b4869ce92cb002f4664849bc7150aadb48b14","kind":"commit","published_at":"2021-01-18T11:21:51.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.0.1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.0.1/manifests"},{"name":"2.0.0","sha":"06285f5ba28fc5f87136145663daa048004ff7ae","kind":"commit","published_at":"2021-01-17T11:17:53.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/2.0.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/2.0.0/manifests"},{"name":"1.3.0","sha":"d32f465507b4e5dfc3453980fca7479f76593272","kind":"commit","published_at":"2020-12-12T21:11:04.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/1.3.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.3.0/manifests"},{"name":"1.2.1","sha":"eec37db7aa1b7c2e6551c5719114077195a53be6","kind":"commit","published_at":"2020-08-29T22:01:20.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/1.2.1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.2.1/manifests"},{"name":"1.2.0","sha":"2626a8aa49568b50961e8d0652327ab90b0b7920","kind":"commit","published_at":"2020-07-08T16:17:17.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/1.2.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.2.0/manifests"},{"name":"1.1.1","sha":"8f0660cc34c4b8a92c0a523e2f41ed8d6bf69b21","kind":"commit","published_at":"2020-06-22T09:45:38.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/1.1.1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.1.1/manifests"},{"name":"1.0.1","sha":"3fb70dc755b2bff12b7992d48b91dd27998f6c21","kind":"commit","published_at":"2020-05-29T14:50:41.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/1.0.1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.0.1/manifests"},{"name":"1.0.0","sha":"90d6a1afe0bc9df9859d3876b802737fa9bfca19","kind":"commit","published_at":"2020-05-29T14:18:01.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/1.0.0","html_url":"https://github.com/adamchainz/time-machine/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.0.0/manifests"},{"name":"1.0.0b1","sha":"1c4fc63d221c7fe3638d907bbb03aee1e40db245","kind":"commit","published_at":"2020-05-04T10:58:56.000Z","download_url":"https://codeload.github.com/adamchainz/time-machine/tar.gz/1.0.0b1","html_url":"https://github.com/adamchainz/time-machine/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/tags/1.0.0b1/manifests"}]},"repo_metadata_updated_at":"2024-10-29T23:11:25.402Z","dependent_packages_count":52,"downloads":11762855,"downloads_period":"last-month","dependent_repos_count":407,"rankings":{"downloads":0.4129097657827946,"dependent_repos_count":0.7170186657317287,"dependent_packages_count":0.3928108561408859,"stargazers_count":2.731073222411073,"forks_count":7.137642136164778,"docker_downloads_count":0.38337538013612493,"average":1.9624716710612307},"purl":"pkg:pypi/time-machine","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/time-machine","docker_dependents_count":40,"docker_downloads_count":138015248,"usage_url":"https://repos.ecosyste.ms/usage/pypi/time-machine","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/time-machine/dependencies","status":null,"funding_links":["https://adamj.eu/books/","https://tidelift.com/funding/github/pypi/time-machine","https://github.com/sponsors/adamchainz"],"critical":true,"issue_metadata":{"last_synced_at":"2024-10-29T18:04:00.111Z","issues_count":48,"pull_requests_count":193,"avg_time_to_close_issue":12259715.307692308,"avg_time_to_close_pull_request":1442000.8042328043,"issues_closed_count":39,"pull_requests_closed_count":189,"pull_request_authors_count":22,"issue_authors_count":33,"avg_comments_per_issue":3.0833333333333335,"avg_comments_per_pull_request":0.24352331606217617,"merged_pull_requests_count":181,"bot_issues_count":0,"bot_pull_requests_count":84,"past_year_issues_count":17,"past_year_pull_requests_count":71,"past_year_avg_time_to_close_issue":4941504.642857143,"past_year_avg_time_to_close_pull_request":324906.2388059702,"past_year_issues_closed_count":14,"past_year_pull_requests_closed_count":67,"past_year_pull_request_authors_count":11,"past_year_issue_authors_count":16,"past_year_avg_comments_per_issue":2.9411764705882355,"past_year_avg_comments_per_pull_request":0.2112676056338028,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":34,"past_year_merged_pull_requests_count":64,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamchainz%2Ftime-machine/issues","maintainers":[{"login":"adamchainz","count":93,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/adamchainz"}],"active_maintainers":[{"login":"adamchainz","count":30,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/adamchainz"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/time-machine/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/time-machine/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/time-machine/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/time-machine/related_packages","maintainers":[{"uuid":"AdamChainz","login":"AdamChainz","name":null,"email":null,"url":null,"packages_count":86,"html_url":"https://pypi.org/user/AdamChainz/","role":null,"created_at":"2022-12-31T10:52:10.100Z","updated_at":"2022-12-31T10:52:10.100Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/AdamChainz/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":714094,"maintainers_count":303429,"namespaces_count":0,"keywords_count":234599,"github":"pypi","metadata":{"funded_packages_count":49933},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-08-05T06:32:00.793Z","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":37,"unique_repositories_count_past_30_days":2,"recent_issues":[{"uuid":"4198549092","node_id":"PR_kwDOChapRM7Pu24a","number":868,"state":"open","title":"build(deps-dev): update time-machine requirement from ^2.16.0 to ^3.2.0","user":"dependabot[bot]","labels":["type: dependencies","status: approved"],"assignees":["thecode","YogevBokobza","TomerFi"],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-03T05:53:21.000Z","updated_at":"2026-04-03T05:55:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): update","packages":[{"name":"time-machine","old_version":"^2.16.0","new_version":"^3.2.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [time-machine](https://github.com/adamchainz/time-machine) 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/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.0 (2025-11-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove mocking of \u003ccode\u003etime.monotonic()\u003c/code\u003e and \u003ccode\u003etime.monotonic_ns()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis mocking caused too many issues, such as causing freezes in asyncio event loops (\u003ccode\u003eIssue [#387](https://github.com/adamchainz/time-machine/issues/387) \u0026lt;https://github.com/adamchainz/time-machine/issues/387\u0026gt;\u003c/code\u003e\u003cstrong\u003e), preventing pytest-durations from timing tests correctly (\u003ccode\u003eIssue [#505](https://github.com/adamchainz/time-machine/issues/505) \u0026lt;https://github.com/adamchainz/time-machine/issues/505\u0026gt;\u003c/code\u003e\u003c/strong\u003e), and triggering timeouts in psycopg (\u003ccode\u003eIssue [#509](https://github.com/adamchainz/time-machine/issues/509) \u0026lt;https://github.com/adamchainz/time-machine/issues/509\u0026gt;\u003c/code\u003e__).\nThe root cause here is that mocking the monotonic clock breaks its contract, allowing it to move backwards when it’s meant to only move forwards.\u003c/p\u003e\n\u003cp\u003eAs an alternative, use |unittest.mock|__ to mock the monotonic function for the specific tested modules that need it.\nThat means that your code should import \u003ccode\u003emonotonic()\u003c/code\u003e or \u003ccode\u003emonotonic_ns()\u003c/code\u003e directly, so that your tests can mock it in those places only.\nFor example, if your system under test looks like:\u003c/p\u003e\n\u003cp\u003e.. |unittest.mock| replace:: \u003ccode\u003eunittest.mock\u003c/code\u003e\n__ \u003ca href=\"https://docs.python.org/3/library/unittest.mock.html\"\u003ehttps://docs.python.org/3/library/unittest.mock.html\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/TomerFi/aioswitcher/pull/868","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomerFi%2Faioswitcher/issues/868","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/868/packages"},{"uuid":"4155294198","node_id":"PR_kwDOMl9L2s7OI2wi","number":241,"state":"open","title":"build(deps-dev): bump time-machine from 2.19.0 to 3.2.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-27T19:12:54.000Z","updated_at":"2026-03-27T19:16:36.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"time-machine","old_version":"2.19.0","new_version":"3.2.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.19.0 to 3.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.0 (2025-11-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove mocking of \u003ccode\u003etime.monotonic()\u003c/code\u003e and \u003ccode\u003etime.monotonic_ns()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis mocking caused too many issues, such as causing freezes in asyncio event loops (\u003ccode\u003eIssue [#387](https://github.com/adamchainz/time-machine/issues/387) \u0026lt;https://github.com/adamchainz/time-machine/issues/387\u0026gt;\u003c/code\u003e\u003cstrong\u003e), preventing pytest-durations from timing tests correctly (\u003ccode\u003eIssue [#505](https://github.com/adamchainz/time-machine/issues/505) \u0026lt;https://github.com/adamchainz/time-machine/issues/505\u0026gt;\u003c/code\u003e\u003c/strong\u003e), and triggering timeouts in psycopg (\u003ccode\u003eIssue [#509](https://github.com/adamchainz/time-machine/issues/509) \u0026lt;https://github.com/adamchainz/time-machine/issues/509\u0026gt;\u003c/code\u003e__).\nThe root cause here is that mocking the monotonic clock breaks its contract, allowing it to move backwards when it’s meant to only move forwards.\u003c/p\u003e\n\u003cp\u003eAs an alternative, use |unittest.mock|__ to mock the monotonic function for the specific tested modules that need it.\nThat means that your code should import \u003ccode\u003emonotonic()\u003c/code\u003e or \u003ccode\u003emonotonic_ns()\u003c/code\u003e directly, so that your tests can mock it in those places only.\nFor example, if your system under test looks like:\u003c/p\u003e\n\u003cp\u003e.. |unittest.mock| replace:: \u003ccode\u003eunittest.mock\u003c/code\u003e\n__ \u003ca href=\"https://docs.python.org/3/library/unittest.mock.html\"\u003ehttps://docs.python.org/3/library/unittest.mock.html\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.19.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=uv\u0026previous-version=2.19.0\u0026new-version=3.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/plugboard-dev/plugboard/pull/241","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/plugboard-dev%2Fplugboard/issues/241","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/241/packages"},{"uuid":"3882447027","node_id":"PR_kwDODl6u4c7AvAU6","number":1376,"state":"closed","title":"Bump the dev-dependencies group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-13T09:49:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T16:56:30.000Z","updated_at":"2026-02-13T09:49:03.000Z","time_to_close":1011151,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev-dependencies","update_count":8,"packages":[{"name":"coverage","old_version":"7.11.0","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"mypy","old_version":"1.18.2","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.14.3","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"},{"name":"time-machine","old_version":"2.19.0","new_version":"3.2.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"types-pytz","old_version":"2025.2.0.20250809","new_version":"2025.2.0.20251108","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 8 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.11.0` | `7.13.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `1.19.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.3` | `0.14.14` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.4.20250913` | `2.32.4.20260107` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.19.0` | `3.2.0` |\n| [types-pytz](https://github.com/typeshed-internal/stub_uploader) | `2025.2.0.20250809` | `2025.2.0.20251108` |\n\n\nUpdates `coverage` from 7.11.0 to 7.13.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.2 — 2026-01-25\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when Python is installed via symlinks, for example with Homebrew, the\nstandard library files could be incorrectly included in coverage reports.\nThis is now fixed, closing \u003ccode\u003eissue 2115\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: if a data file is created with no read permissions, the combine step\nwould fail completely. Now a warning is issued and the file is skipped.\nCloses \u003ccode\u003eissue 2117\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2115: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003ecoveragepy/coveragepy#2115\u003c/a\u003e\n.. _issue 2117: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2117\"\u003ecoveragepy/coveragepy#2117\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.1 — 2025-12-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: the JSON report now includes a \u003ccode\u003e\u0026quot;start_line\u0026quot;\u003c/code\u003e key for function and\nclass regions, indicating the first line of the region in the source. Closes\n\u003ccode\u003eissue 2110\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: The \u003ccode\u003edebug data\u003c/code\u003e command now takes file names as arguments on the\ncommand line, so you can inspect specific data files without needing to set\nthe \u003ccode\u003eCOVERAGE_FILE\u003c/code\u003e environment variable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the JSON report used to report module docstrings as executed lines,\nwhich no other report did, as described in \u003ccode\u003eissue 2105\u003c/code\u003e_. This is now fixed,\nthanks to Jianrong Zhao.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: coverage.py uses a more disciplined approach to detecting where\nthird-party code is installed, and avoids measuring it. This shouldn't change\nany behavior. If you find that it does, please get in touch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: data files that will be combined now record their hash as part\nof the file name. This lets us skip duplicate data more quickly, speeding the\ncombining step.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDocs: added a section explaining more about what is considered a missing\nbranch and how it is reported: :ref:\u003ccode\u003ebranch_explain\u003c/code\u003e, as requested in \u003ccode\u003eissue 1597\u003c/code\u003e\u003cem\u003e. Thanks to \u003ccode\u003eAyisha Mohammed \u0026lt;pull 2092_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTests: the test suite misunderstood what core was being tested if\n\u003ccode\u003eCOVERAGE_CORE\u003c/code\u003e wasn't set on 3.14+. This is now fixed, closing \u003ccode\u003eissue 2109\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1597: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1597\"\u003ecoveragepy/coveragepy#1597\u003c/a\u003e\n.. _pull 2092: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2092\"\u003ecoveragepy/coveragepy#2092\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/513e97162536cb94aeb94ed3cbe487ca64d13e07\"\u003e\u003ccode\u003e513e971\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27a8230cf0ef73abca824d2a8622235d9ad8ab96\"\u003e\u003ccode\u003e27a8230\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27d8daac216ffef80276515b22cf679f9fabc422\"\u003e\u003ccode\u003e27d8daa\u003c/code\u003e\u003c/a\u003e refactor: plural does more\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2f248cf095fc49d3599c39befdea6a5552ccd23\"\u003e\u003ccode\u003ea2f248c\u003c/code\u003e\u003c/a\u003e fix: stdlib might be through a symlink. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003e#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc52a22953759f71c291d31e7d17faf9903c0667\"\u003e\u003ccode\u003ebc52a22\u003c/code\u003e\u003c/a\u003e debug: re-organize Matchers to show more of what they do\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f338d816ba7fcd23934a9397d15450593f0f20d9\"\u003e\u003ccode\u003ef338d81\u003c/code\u003e\u003c/a\u003e debug: build is a tuple, don't show it on two lines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92020e469ab6c80cbe24786d0250a571d5f569cf\"\u003e\u003ccode\u003e92020e4\u003c/code\u003e\u003c/a\u003e refactor(test): convert to parametrized\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6387d0a60d80cb96231ad32fe81be47cddfe1c78\"\u003e\u003ccode\u003e6387d0a\u003c/code\u003e\u003c/a\u003e test: let (most) tests run with no network\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1d31e33cfe0ccef7d87c1f0c6219f55a3d9b5eee\"\u003e\u003ccode\u003e1d31e33\u003c/code\u003e\u003c/a\u003e build: workflows sometimes need more than 10 min\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/62949782b7810d8ffc228ba0e00f81c2ab81cda7\"\u003e\u003ccode\u003e6294978\u003c/code\u003e\u003c/a\u003e refactor: an error message is now uniform across versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.11.0...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.18.2 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.3 to 0.14.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8b2e7b36f246b990fe473a84eef25ff429e59ecf\"\u003e\u003ccode\u003e8b2e7b3\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22813\"\u003e#22813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4c7d1f50fd8d1baf06a3c8885ecd0ded0113d383\"\u003e\u003ccode\u003e4c7d1f5\u003c/code\u003e\u003c/a\u003e [ty] Infer \u003ccode\u003eTypedDict\u003c/code\u003e types with \u0026gt;=1 required key as being always truthy (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b7de4341535ff2b299695335e0a7b9ebaf297348\"\u003e\u003ccode\u003eb7de434\u003c/code\u003e\u003c/a\u003e add CCfW hooks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22803\"\u003e#22803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b912dfc8788f8f8c351767899df6b72ce3366352\"\u003e\u003ccode\u003eb912dfc\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1ff062d1cccb8025de184a55c6dfe469a4293249\"\u003e\u003ccode\u003e1ff062d\u003c/code\u003e\u003c/a\u003e [ty] Improve completion rankings for raise-from/except contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22775\"\u003e#22775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7e408a51d24db2bca248bb90f2f7938f83efd22b\"\u003e\u003ccode\u003e7e408a5\u003c/code\u003e\u003c/a\u003e Update dependency wrangler to v4.59.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22793\"\u003e#22793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ceb876b82300bd237d11e3eb77c46fcf3d3afe85\"\u003e\u003ccode\u003eceb876b\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e,...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c5b4ee68c90faf0e609fa6553a171a7ba60ebdcb\"\u003e\u003ccode\u003ec5b4ee6\u003c/code\u003e\u003c/a\u003e [ty] Support solving generics involving PEP 695 type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22678\"\u003e#22678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b9a61293153f43df9963c727539309b76ac4756d\"\u003e\u003ccode\u003eb9a6129\u003c/code\u003e\u003c/a\u003e [ty] Improve support for kwarg splats in dictionary literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22781\"\u003e#22781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f516d47ceb7f6a0c3a95eaaa2c7451a32b5d7120\"\u003e\u003ccode\u003ef516d47\u003c/code\u003e\u003c/a\u003e Update contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.14.3...0.14.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.32.4.20250913 to 2.32.4.20260107\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `setuptools` from 80.9.0 to 80.10.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5115\"\u003e#5115\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5128\"\u003e#5128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.1\u003c/h1\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5152\"\u003e#5152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove post-release tags on setuptools' own build. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4530\"\u003e#4530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefreshed vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5033\"\u003e#5033\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/pypa/setuptools/commit/5cf2d085186f2c8053940076db99045b826ec22a\"\u003e\u003ccode\u003e5cf2d08\u003c/code\u003e\u003c/a\u003e Bump version: 80.10.1 → 80.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/852cd5e9fa507c91f5f6683425f157649715d268\"\u003e\u003ccode\u003e852cd5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5166\"\u003e#5166\u003c/a\u003e from pypa/bugfix/5159-vendor-bin-free\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/11115ee8e5b533c2cd948272b02f339f23b6d20a\"\u003e\u003ccode\u003e11115ee\u003c/code\u003e\u003c/a\u003e Suppress deprecation warning.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/5cf9185dc8f2b3fbf140ebf6558798ccc0ce1077\"\u003e\u003ccode\u003e5cf9185\u003c/code\u003e\u003c/a\u003e Update vendored dependencies.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/cf59f41400c75326d381f2d1989027b229b59a59\"\u003e\u003ccode\u003ecf59f41\u003c/code\u003e\u003c/a\u003e Delete all binaries generated by vendored package install.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/89a598167c614ebaf7da441389bce35534b7cd7f\"\u003e\u003ccode\u003e89a5981\u003c/code\u003e\u003c/a\u003e Add missing newsfragments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/c0114af5484625c25e48cd85429445f9d6a1cfc0\"\u003e\u003ccode\u003ec0114af\u003c/code\u003e\u003c/a\u003e Postpone deprecation warnings related to PEP 639 to 2027-Feb-18 (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5115\"\u003e#5115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/de076038f164a3629c91e3f2bc88a7b9c4f5312d\"\u003e\u003ccode\u003ede07603\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;[CI] Constraint transient test dependency on pyobjc\u0026quot; (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5128\"\u003e#5128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/3afd5d66606c092131052e982266b322f0a0dd4b\"\u003e\u003ccode\u003e3afd5d6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;[CI] Constraint transient test dependency on pyobjc\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/adfb0c9e3d1789587d609228d9ea1d79272e4107\"\u003e\u003ccode\u003eadfb0c9\u003c/code\u003e\u003c/a\u003e Bump version: 80.10.0 → 80.10.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v80.9.0...v80.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `time-machine` from 2.19.0 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.0 (2025-11-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove mocking of \u003ccode\u003etime.monotonic()\u003c/code\u003e and \u003ccode\u003etime.monotonic_ns()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis mocking caused too many issues, such as causing freezes in asyncio event loops (\u003ccode\u003eIssue [#387](https://github.com/adamchainz/time-machine/issues/387) \u0026lt;https://github.com/adamchainz/time-machine/issues/387\u0026gt;\u003c/code\u003e\u003cstrong\u003e), preventing pytest-durations from timing tests correctly (\u003ccode\u003eIssue [#505](https://github.com/adamchainz/time-machine/issues/505) \u0026lt;https://github.com/adamchainz/time-machine/issues/505\u0026gt;\u003c/code\u003e\u003c/strong\u003e), and triggering timeouts in psycopg (\u003ccode\u003eIssue [#509](https://github.com/adamchainz/time-machine/issues/509) \u0026lt;https://github.com/adamchainz/time-machine/issues/509\u0026gt;\u003c/code\u003e__).\nThe root cause here is that mocking the monotonic clock breaks its contract, allowing it to move backwards when it’s meant to only move forwards.\u003c/p\u003e\n\u003cp\u003eAs an alternative, use |unittest.mock|__ to mock the monotonic function for the specific tested modules that need it.\nThat means that your code should import \u003ccode\u003emonotonic()\u003c/code\u003e or \u003ccode\u003emonotonic_ns()\u003c/code\u003e directly, so that your tests can mock it in those places only.\nFor example, if your system under test looks like:\u003c/p\u003e\n\u003cp\u003e.. |unittest.mock| replace:: \u003ccode\u003eunittest.mock\u003c/code\u003e\n__ \u003ca href=\"https://docs.python.org/3/library/unittest.mock.html\"\u003ehttps://docs.python.org/3/library/unittest.mock.html\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.19.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pytz` from 2025.2.0.20250809 to 2025.2.0.20251108\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/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 \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/HowTheyVote/howtheyvote/pull/1376","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/HowTheyVote%2Fhowtheyvote/issues/1376","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1376/packages"},{"uuid":"3773917815","node_id":"PR_kwDODDrsrs67KgcW","number":924,"state":"open","title":"build(deps-dev): bump time-machine from 3.1.0 to 3.2.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-01T00:01:50.000Z","updated_at":"2026-01-01T00:06:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"time-machine","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.1.0 to 3.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.1.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/marcosschroh/dataclasses-avroschema/pull/924","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcosschroh%2Fdataclasses-avroschema/issues/924","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/924/packages"},{"uuid":"3761467098","node_id":"PR_kwDOBvR5As66iWz-","number":20766,"state":"open","title":"build(deps): bump time-machine from 3.1.0 to 3.2.0 in /api","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-25T06:08:54.000Z","updated_at":"2025-12-30T18:00:44.459Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"time-machine","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":"/api","ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.1.0 to 3.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.1.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/pass-culture/pass-culture-main/pull/20766","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pass-culture%2Fpass-culture-main/issues/20766","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/20766/packages"},{"uuid":"3679015689","node_id":"PR_kwDOBXYo-M62PaCT","number":12568,"state":"open","title":"chore(deps-dev): bump time-machine from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["Dependencies","Python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-01T03:04:54.000Z","updated_at":"2025-12-01T05:50:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"time-machine","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.0.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.0.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/freqtrade/freqtrade/pull/12568","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/freqtrade%2Ffreqtrade/issues/12568","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12568/packages"},{"uuid":"3660149006","node_id":"PR_kwDOK6tdj861Q_wF","number":539,"state":"closed","title":"chore(deps): bump time-machine from 2.19.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-02T19:22:25.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-24T18:59:49.000Z","updated_at":"2025-12-02T19:22:26.000Z","time_to_close":692556,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"time-machine","old_version":"2.19.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.19.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.0 (2025-11-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove mocking of \u003ccode\u003etime.monotonic()\u003c/code\u003e and \u003ccode\u003etime.monotonic_ns()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis mocking caused too many issues, such as causing freezes in asyncio event loops (\u003ccode\u003eIssue [#387](https://github.com/adamchainz/time-machine/issues/387) \u0026lt;https://github.com/adamchainz/time-machine/issues/387\u0026gt;\u003c/code\u003e\u003cstrong\u003e), preventing pytest-durations from timing tests correctly (\u003ccode\u003eIssue [#505](https://github.com/adamchainz/time-machine/issues/505) \u0026lt;https://github.com/adamchainz/time-machine/issues/505\u0026gt;\u003c/code\u003e\u003c/strong\u003e), and triggering timeouts in psycopg (\u003ccode\u003eIssue [#509](https://github.com/adamchainz/time-machine/issues/509) \u0026lt;https://github.com/adamchainz/time-machine/issues/509\u0026gt;\u003c/code\u003e__).\nThe root cause here is that mocking the monotonic clock breaks its contract, allowing it to move backwards when it’s meant to only move forwards.\u003c/p\u003e\n\u003cp\u003eAs an alternative, use |unittest.mock|__ to mock the monotonic function for the specific tested modules that need it.\nThat means that your code should import \u003ccode\u003emonotonic()\u003c/code\u003e or \u003ccode\u003emonotonic_ns()\u003c/code\u003e directly, so that your tests can mock it in those places only.\nFor example, if your system under test looks like:\u003c/p\u003e\n\u003cp\u003e.. |unittest.mock| replace:: \u003ccode\u003eunittest.mock\u003c/code\u003e\n__ \u003ca href=\"https://docs.python.org/3/library/unittest.mock.html\"\u003ehttps://docs.python.org/3/library/unittest.mock.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# example.py\nfrom time import monotonic\n\u003cp\u003edef measurement():\nstart = monotonic()\n...\nend = monotonic()\nreturn end - start\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e…then your tests can mock \u003ccode\u003emonotonic()\u003c/code\u003e like this:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003efrom unittest import TestCase, mock\n\u003cp\u003eimport example\u003c/p\u003e\n\u003cp\u003eclass MeasurementTests(TestCase):\ndef test_success(self):\nwith mock.patch.object(example, \u0026quot;monotonic\u0026quot;, side_effect=[0.0, 1.23]):\nresult = example.measurement()\nassert result == 1.23\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/5d2e8dd4a427988e53d8fcce74b717dd4d0f9538\"\u003e\u003ccode\u003e5d2e8dd\u003c/code\u003e\u003c/a\u003e Version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/39ba19f3409b6ab32e04fc5ed10016efa85b7675\"\u003e\u003ccode\u003e39ba19f\u003c/code\u003e\u003c/a\u003e Upgrade cibuildwheel to 3.3.0 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/581\"\u003e#581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/3a0d5dd43e440761bfff4696856db301cf189560\"\u003e\u003ccode\u003e3a0d5dd\u003c/code\u003e\u003c/a\u003e Raise ValueError from escape_hatch functions when not travelling (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/580\"\u003e#580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ac23916b4d37d838d04fbb0709d76ed50e7113e2\"\u003e\u003ccode\u003eac23916\u003c/code\u003e\u003c/a\u003e Improve usage documentation (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/579\"\u003e#579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d10f0003cd619636de38373f774759e84e6ce3ac\"\u003e\u003ccode\u003ed10f000\u003c/code\u003e\u003c/a\u003e Parse str destinations with datetime.fromisoformat() first (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b82045133a6414e84c4521c5d50322861026d62f\"\u003e\u003ccode\u003eb820451\u003c/code\u003e\u003c/a\u003e Reorder changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/48f1af50f646198196c6d7ed7a14f7f23ed88482\"\u003e\u003ccode\u003e48f1af5\u003c/code\u003e\u003c/a\u003e Make dateutil an optional dependency (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/576\"\u003e#576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/5559f89b6d61cf4156f64eb87919a7fdd2477b4e\"\u003e\u003ccode\u003e5559f89\u003c/code\u003e\u003c/a\u003e Remove Python 3.9 from cibuildwheel target list (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/575\"\u003e#575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.19.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=uv\u0026previous-version=2.19.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/Jenselme/legadilo/pull/539","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jenselme%2Flegadilo/issues/539","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/539/packages"},{"uuid":"3657265617","node_id":"PR_kwDOOQxoIM61HT16","number":247,"state":"open","title":"Bump time-machine from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python","stale"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-11-24T06:30:42.000Z","updated_at":"2026-01-26T08:04:08.350Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.0.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.0.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/home-assistant-cn/supervisor/pull/247","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/home-assistant-cn%2Fsupervisor/issues/247","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/247/packages"},{"uuid":"3656757045","node_id":"PR_kwDOPNm0M861FmPi","number":33,"state":"closed","title":"Bump time-machine from 3.0.0 to 3.1.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-02T15:11:48.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-24T01:31:23.000Z","updated_at":"2025-12-02T15:11:50.000Z","time_to_close":740425,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.0.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.0.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=uv\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/sortitionfoundation/opendlp/pull/33","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sortitionfoundation%2Fopendlp/issues/33","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/33/packages"},{"uuid":"3652250838","node_id":"PR_kwDOBAULyM60227I","number":9765,"state":"closed","title":"Bump time-machine from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["inmantaci"],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2025-11-21T17:08:11.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-21T16:02:53.000Z","updated_at":"2025-11-21T17:08:23.000Z","time_to_close":3918,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.0.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.0.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/inmanta/inmanta-core/pull/9765","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/inmanta%2Finmanta-core/issues/9765","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9765/packages"},{"uuid":"3576869282","node_id":"PR_kwDODDrsrs6w7yP5","number":906,"state":"open","title":"build(deps-dev): bump time-machine from 2.16.0 to 2.19.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-11-01T00:02:02.000Z","updated_at":"2025-11-01T00:03:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.16.0 to 2.19.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=2.16.0\u0026new-version=2.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/marcosschroh/dataclasses-avroschema/pull/906","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcosschroh%2Fdataclasses-avroschema/issues/906","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/906/packages"},{"uuid":"3510007600","node_id":"PR_kwDOOYeBPM6tdglG","number":40,"state":"closed","title":"chore(deps): bump the runtime-dependencies group across 1 directory with 33 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2025-11-10T13:59:04.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T13:06:48.000Z","updated_at":"2025-11-10T13:59:06.000Z","time_to_close":2422336,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"runtime-dependencies","update_count":33,"packages":[{"name":"alembic","old_version":"1.15.2","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pip","old_version":"25.0.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.15"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.3.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"structlog","old_version":"25.2.0","new_version":"25.4.0","repository_url":"https://github.com/hynek/structlog"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"azure-storage-blob","old_version":"12.25.1","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-core","old_version":"1.33.0","new_version":"1.35.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.21.0","new_version":"1.25.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.1","repository_url":"https://github.com/googleapis/python-storage"},{"name":"pymssql","old_version":"2.3.4","new_version":"2.3.8","repository_url":"https://github.com/pymssql/pymssql"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.14","repository_url":"https://github.com/getmoto/moto"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-docker","old_version":"3.2.1","new_version":"3.2.3","repository_url":"https://github.com/avast/pytest-docker"},{"name":"pytest-structlog","old_version":"1.1","new_version":"1.2","repository_url":"https://github.com/wimglenn/pytest-structlog"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"setproctitle","old_version":"1.3.5","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"types-dateparser","old_version":"1.2.0.20250208","new_version":"1.2.2.20250809","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-jsonschema","old_version":"4.23.0.20241208","new_version":"4.25.1.20251009","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-dependencies group with 33 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.15.2` | `1.16.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [pip](https://github.com/pypa/pip) | `25.0.1` | `25.2` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.18.15` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.44` |\n| [structlog](https://github.com/hynek/structlog) | `25.2.0` | `25.4.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.3` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.25.1` | `12.26.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.33.0` | `1.35.1` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.21.0` | `1.25.1` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.1` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.3.4` | `2.3.8` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.14` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-docker](https://github.com/avast/pytest-docker) | `3.2.1` | `3.2.3` |\n| [pytest-structlog](https://github.com/wimglenn/pytest-structlog) | `1.1` | `1.2` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.5` | `1.3.7` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [types-dateparser](https://github.com/typeshed-internal/stub_uploader) | `1.2.0.20250208` | `1.2.2.20250809` |\n| [types-jsonschema](https://github.com/typeshed-internal/stub_uploader) | `4.23.0.20241208` | `4.25.1.20251009` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20250913` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n\n\nUpdates `alembic` from 1.15.2 to 1.16.5\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.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.4\u003c/h1\u003e\n\u003cp\u003eReleased: July 10, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue in new \u003ccode\u003epyproject.toml\u003c/code\u003e support where boolean values, such as\nthose used for the \u003ccode\u003erecursive_version_locations\u003c/code\u003e and \u003ccode\u003esourceless\u003c/code\u003e\nconfiguration parameters, would not be accepted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1694\"\u003e#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.3\u003c/h1\u003e\n\u003cp\u003eReleased: July 8, 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 new \u003ccode\u003epyproject_async\u003c/code\u003e template, combining the new \u003ccode\u003epyproject\u003c/code\u003e\ntemplate with the \u003ccode\u003easync\u003c/code\u003e template.  Pull request courtesy Alc-Alc.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1683\"\u003e#1683\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Add \u0026quot;module\u0026quot; post-write hook. This hook type is almost identical to the\nconsole_scripts hook, except it's running \u003ccode\u003epython -m black\u003c/code\u003e instead of\nusing black's \u003ccode\u003econsole_script\u003c/code\u003e. It is mainly useful for tools without\nconsole scripts (e.g. ruff), but has semantics closer to the\nconsole_scripts hook in that it finds the ruff module available to the\nrunning interpreter instead of finding an executable by path. Pull request\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\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 `anyio` from 4.9.0 to 4.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.25.1\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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra by \u003ca href=\"https://github.com/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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.24.1...v4.25.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.1...v4.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUnambiguously quote and escape properties in JSON path rendering by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop python\u0026lt;3.9 backports by \u003ca href=\"https://github.com/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\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/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\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.24.0...v4.24.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.0...v4.24.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculation of evaluated properties by \u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#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\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bkueng\"\u003e\u003ccode\u003e@​bkueng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1326\"\u003epython-jsonschema/jsonschema#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#1351\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.23.0...v4.24.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.24.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/331c38425519b69118d22ebe467ad230fb83a010\"\u003e\u003ccode\u003e331c384\u003c/code\u003e\u003c/a\u003e Add the fix to the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/c1ec0a645e913e83de95995f6efbbd358676abf6\"\u003e\u003ccode\u003ec1ec0a6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1398\"\u003e#1398\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/8e7d594faff13f8f663b306a0d86bea0ce5de6cb\"\u003e\u003ccode\u003e8e7d594\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1399\"\u003e#1399\u003c/a\u003e from python-jsonschema/dependabot/github_actions/act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/460f4fae42664773160f56ccc843a4fcea34f7cf\"\u003e\u003ccode\u003e460f4fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e from sirosen/improve-protocol-init-signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1e58409b71a9696b7bf9938ae8a3a48ef95ab29e\"\u003e\u003ccode\u003e1e58409\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/64bc2171624ef201bdbf35e47780348ce30935c5\"\u003e\u003ccode\u003e64bc217\u003c/code\u003e\u003c/a\u003e Add a typing test for the Validator protocol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6c25741bff889477680f9b0d1aa967ae35c38f43\"\u003e\u003ccode\u003e6c25741\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/bf603d59117f840916709fc87c6625df43d1fe72\"\u003e\u003ccode\u003ebf603d5\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6.4.3 to 6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a916d8f8253baa11bacc60f0868f0bab1e42d526\"\u003e\u003ccode\u003ea916d8f\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/de60f18bd97395a52a11b561eb62963e0ffe9e71\"\u003e\u003ccode\u003ede60f18\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1397\"\u003e#1397\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 25.0.1 to 25.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e25.2 (2025-07-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ccode\u003e[#13506](https://github.com/pypa/pip/issues/13506) \u0026lt;https://github.com/pypa/pip/issues/13506\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAutomatic download resumption and retrying is enabled by default. (\u003ccode\u003e[#13464](https://github.com/pypa/pip/issues/13464) \u0026lt;https://github.com/pypa/pip/issues/13464\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRequires-Python error message displays version clauses in numerical order. (\u003ccode\u003e[#13367](https://github.com/pypa/pip/issues/13367) \u0026lt;https://github.com/pypa/pip/issues/13367\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement getting the order to install a very large number of interdependent packages. (\u003ccode\u003e[#13424](https://github.com/pypa/pip/issues/13424) \u0026lt;https://github.com/pypa/pip/issues/13424\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow time taken instead of \u003ccode\u003eeta 0:00:00\u003c/code\u003e at download completion. (\u003ccode\u003e[#13483](https://github.com/pypa/pip/issues/13483) \u0026lt;https://github.com/pypa/pip/issues/13483\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eSpeed up small CLI tools by removing \u003ccode\u003eimport re\u003c/code\u003e from the console\nscript executable template. (\u003ccode\u003e[#13165](https://github.com/pypa/pip/issues/13165) \u0026lt;https://github.com/pypa/pip/issues/13165\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove warning when cloning from a Git reference that does not look like a commit hash. (\u003ccode\u003e[#12283](https://github.com/pypa/pip/issues/12283) \u0026lt;https://github.com/pypa/pip/issues/12283\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip config debug\u003c/code\u003e now correctly separates options as set by the different files\nat the same level. (\u003ccode\u003e[#12099](https://github.com/pypa/pip/issues/12099) \u0026lt;https://github.com/pypa/pip/issues/12099\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnsure truststore feature remains active even when a proxy is also in use. (\u003ccode\u003e[#13343](https://github.com/pypa/pip/issues/13343) \u0026lt;https://github.com/pypa/pip/issues/13343\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude sub-commands in tab completion. (\u003ccode\u003e[#13140](https://github.com/pypa/pip/issues/13140) \u0026lt;https://github.com/pypa/pip/issues/13140\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip list\u003c/code\u003e with the \u003ccode\u003ejson\u003c/code\u003e or \u003ccode\u003efreeze\u003c/code\u003e format enabled will no longer\ncrash when encountering a package with an invalid version. (\u003ccode\u003e[#13345](https://github.com/pypa/pip/issues/13345) \u0026lt;https://github.com/pypa/pip/issues/13345\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a hint if a system error is raised involving long filenames or path segments on Windows. (\u003ccode\u003e[#13346](https://github.com/pypa/pip/issues/13346) \u0026lt;https://github.com/pypa/pip/issues/13346\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResumed downloads are saved to the HTTP cache like any other normal download. (\u003ccode\u003e[#13441](https://github.com/pypa/pip/issues/13441) \u0026lt;https://github.com/pypa/pip/issues/13441\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfigured verbosity is consistently forwarded while calling Git during\nVCS operations. (\u003ccode\u003e[#13329](https://github.com/pypa/pip/issues/13329) \u0026lt;https://github.com/pypa/pip/issues/13329\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress the progress bar, when running with \u003ccode\u003e--log\u003c/code\u003e and \u003ccode\u003e--quiet\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eConsequently, a new \u003ccode\u003eauto\u003c/code\u003e mode for \u003ccode\u003e--progress-bar\u003c/code\u003e has been added.\n\u003ccode\u003eauto\u003c/code\u003e will enable progress bars unless suppressed by \u003ccode\u003e--quiet\u003c/code\u003e,\nwhile \u003ccode\u003eon\u003c/code\u003e will always enable progress bars. (\u003ccode\u003e[#10915](https://github.com/pypa/pip/issues/10915) \u0026lt;https://github.com/pypa/pip/issues/10915\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local URLs with non-\u003ccode\u003efile\u003c/code\u003e schemes. (\u003ccode\u003e[#13509](https://github.com/pypa/pip/issues/13509) \u0026lt;https://github.com/pypa/pip/issues/13509\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local file URLs on Windows in newer Python versions. (\u003ccode\u003e[#13510](https://github.com/pypa/pip/issues/13510) \u0026lt;https://github.com/pypa/pip/issues/13510\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix remaining test failures in Python 3.14 by adjusting \u003ccode\u003epath_to_url\u003c/code\u003e and similar functions. (\u003ccode\u003e[#13423](https://github.com/pypa/pip/issues/13423) \u0026lt;https://github.com/pypa/pip/issues/13423\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing \u003ccode\u003enetwork\u003c/code\u003e test markings, making the suite pass in offline\nenvironments again. (\u003ccode\u003e[#13378](https://github.com/pypa/pip/issues/13378) \u0026lt;https://github.com/pypa/pip/issues/13378\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CacheControl to 0.14.3\u003c/li\u003e\n\u003cli\u003eUpgrade certifi to 2025.7.14\u003c/li\u003e\n\u003cli\u003eUpgrade distlib to 0.4.0\u003c/li\u003e\n\u003cli\u003eUpgrade msgpack to 1.1.1\u003c/li\u003e\n\u003cli\u003eUpgrade platformdirs to 4.3.8\u003c/li\u003e\n\u003cli\u003eUpgrade pygments to 2.19.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.32.4\u003c/li\u003e\n\u003cli\u003eUpgrade resolvelib to 1.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/pip/commit/2e05cae3da2cfafa6dce58167a25b7dba4bc2a33\"\u003e\u003ccode\u003e2e05cae\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/f24906109c84ca51eef57a4f925298d38ff31df3\"\u003e\u003ccode\u003ef249061\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/78d15a5da09c6fbc5c2cd88fb5bd67bfd7fb0637\"\u003e\u003ccode\u003e78d15a5\u003c/code\u003e\u003c/a\u003e Copyedit news entries before 25.2 (again)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4fe68d78ae8b117ad413ec61c518dd600af08bf0\"\u003e\u003ccode\u003e4fe68d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13506\"\u003e#13506\u003c/a\u003e from ichard26/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/775a86f2bac8894771911ab068b18f09550cb6f0\"\u003e\u003ccode\u003e775a86f\u003c/code\u003e\u003c/a\u003e Fix broken unit tests \u0026amp; xfail weird failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2773b13baa59ec68b03df9f0f73e4e3c21fcd958\"\u003e\u003ccode\u003e2773b13\u003c/code\u003e\u003c/a\u003e Reformat and add --allow-unix-socket to pytest config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e384d1032c189312ac21f23844c9c6f1f4750eb1\"\u003e\u003ccode\u003ee384d10\u003c/code\u003e\u003c/a\u003e Declare Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4117dc7c6b606d825904ffbe35d51012923374f4\"\u003e\u003ccode\u003e4117dc7\u003c/code\u003e\u003c/a\u003e Always remove authority section when cleaning local URL path (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13510\"\u003e#13510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2e21934b5c35a0e6b41fd586399cd36ed304c03c\"\u003e\u003ccode\u003e2e21934\u003c/code\u003e\u003c/a\u003e Fix cleaning of local URLs with VCS schemes (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13509\"\u003e#13509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/853a593191d7205b837d32a72e0eb7e7b81e1821\"\u003e\u003ccode\u003e853a593\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003epath_to_url()\u003c/code\u003e tests (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13496\"\u003e#13496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/25.0.1...25.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/HISTORY.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.1.0\u003c/h1\u003e\n\u003cp\u003e2025-09-17\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2581_, [Windows]: publish ARM64 wheels.  (patch by Matthieu Darbois)\u003c/li\u003e\n\u003cli\u003e2571_, [FreeBSD]: Dropped support for FreeBSD 8 and earlier. FreeBSD 8 was\nmaintained from 2009 to 2013.\u003c/li\u003e\n\u003cli\u003e2575_: introduced \u003ccode\u003edprint\u003c/code\u003e CLI tool to format .yml and .md files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2473_, [macOS]: Fix build issue on macOS 11 and lower.\u003c/li\u003e\n\u003cli\u003e2494_, [Windows]: All APIs dealing with paths, such as\n\u003ccode\u003eProcess.memory_maps()\u003c/code\u003e\u003cem\u003e, \u003ccode\u003eProcess.exe()\u003c/code\u003e\u003c/em\u003e and \u003ccode\u003eProcess.open_files()\u003c/code\u003e_ does\nnot properly handle UNC paths. Paths such as \u003ccode\u003e\\\\??\\\\C:\\\\Windows\\\\Temp\u003c/code\u003e and\n\u003ccode\u003e'\\\\Device\\\\HarddiskVolume1\\\\Windows\\\\Temp'\u003c/code\u003e are now converted to\n\u003ccode\u003eC:\\\\Windows\\\\Temp\u003c/code\u003e.  (patch by Ben Peddell)\u003c/li\u003e\n\u003cli\u003e2506_, [Windows]: Windows service APIs had issues with unicode services using\nspecial characters in their name.\u003c/li\u003e\n\u003cli\u003e2514_, [Linux]: \u003ccode\u003eProcess.cwd()\u003c/code\u003e_ sometimes fail with \u003ccode\u003eFileNotFoundError\u003c/code\u003e due\nto a race condition.\u003c/li\u003e\n\u003cli\u003e2526_, [Linux]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e\u003cem\u003e, which is used to univocally\nidentify a process over time, is subject to system clock updates, and as such\ncan lead to \u003ccode\u003eProcess.is_running()\u003c/code\u003e\u003c/em\u003e returning a wrong result. A monotonic\ncreation time is now used instead.  (patch by Jonathan Kohler)\u003c/li\u003e\n\u003cli\u003e2528_, [Linux]: \u003ccode\u003eProcess.children()\u003c/code\u003e_ may raise \u003ccode\u003ePermissionError\u003c/code\u003e. It will\nnow raise \u003ccode\u003eAccessDenied\u003c/code\u003e_ instead.\u003c/li\u003e\n\u003cli\u003e2540_, [macOS]: \u003ccode\u003eboot_time()\u003c/code\u003e_ is off by 45 seconds (C precision issue).\u003c/li\u003e\n\u003cli\u003e2541_, 2570_, 2578_ [Linux], [macOS], [NetBSD]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e_ does\nnot reflect system clock updates.\u003c/li\u003e\n\u003cli\u003e2542_: if system clock is updated \u003ccode\u003eProcess.children()\u003c/code\u003e_ and\n\u003ccode\u003eProcess.parent()\u003c/code\u003e_ may not be able to return the right information.\u003c/li\u003e\n\u003cli\u003e2545_: [Illumos]: Fix handling of MIB2_UDP_ENTRY in \u003ccode\u003enet_connections()\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003e2552_, [Windows]: \u003ccode\u003eboot_time()\u003c/code\u003e_ didn't take into account the time spent\nduring suspend / hibernation.\u003c/li\u003e\n\u003cli\u003e2560_, [Linux]: \u003ccode\u003eProcess.memory_maps()\u003c/code\u003e_ may crash with \u003ccode\u003eIndexError\u003c/code\u003e on\nRISCV64 due to a malformed \u003ccode\u003e/proc/{PID}/smaps\u003c/code\u003e file.  (patch by Julien\nStephan)\u003c/li\u003e\n\u003cli\u003e2586_, [macOS], [CRITICAL]: fixed different places in C code which can\ntrigger a segfault.\u003c/li\u003e\n\u003cli\u003e2604_, [Linux]: \u003ccode\u003evirtual_memory()\u003c/code\u003e_ \u0026quot;used\u0026quot; memory does not match recent\nversions of \u003ccode\u003efree\u003c/code\u003e CLI utility.  (patch by Isaac K. Ko)\u003c/li\u003e\n\u003cli\u003e2605_, [Linux]: \u003ccode\u003epsutil.sensors_battery()\u003c/code\u003e reports a negative amount for\nseconds left.\u003c/li\u003e\n\u003cli\u003e2607_, [Windows]: \u003ccode\u003eWindowsService.description()\u003c/code\u003e method may fail with\n\u003ccode\u003eERROR_NOT_FOUND\u003c/code\u003e. Now it returns an empty string instead.\u003c/li\u003e\n\u003cli\u003e2610:, [macOS], [CRITICAL]: fix \u003ccode\u003ecpu_freq()\u003c/code\u003e_ segfault on ARM architectures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/0d18187e79b349e577fadabd3589f8fdbf99bf5a\"\u003e\u003ccode\u003e0d18187\u003c/code\u003e\u003c/a\u003e Revert HISTORY notes about \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e. We still do publish 3.6 and 3.7 wheels.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/229e2de232860fe22e2c2884c20b8979c643d5c6\"\u003e\u003ccode\u003e229e2de\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/fb75b28226ec8e6b9e5b9eefa05a62de579cc114\"\u003e\u003ccode\u003efb75b28\u003c/code\u003e\u003c/a\u003e Chore: skip CI tests except on Python 3.8 and 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/3a4c01638bc61c77f43a05aea5bc6e1ddc81c6c4\"\u003e\u003ccode\u003e3a4c016\u003c/code\u003e\u003c/a\u003e Stop publishing wheels for Python 3.6 and 3.7 (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/83e4f7fdd76051dd8e0eeed99e2bf5fc881a2960\"\u003e\u003ccode\u003e83e4f7f\u003c/code\u003e\u003c/a\u003e OSX: disable failing test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/df0d4e2637917377bd5971f1745e881b75f2c6e2\"\u003e\u003ccode\u003edf0d4e2\u003c/code\u003e\u003c/a\u003e Call GetExtended[Tcp|Udp]Table twice under free-threaded build (round 2) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2627\"\u003e#2627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/dcbfb81e863fa2b8688ccd8da27b09b539404688\"\u003e\u003ccode\u003edcbfb81\u003c/code\u003e\u003c/a\u003e [Windows] fix unicode issues around service APIs (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2626\"\u003e#2626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ef72dcd076f1cec94ba50ec30b5dbebb272845d0\"\u003e\u003ccode\u003eef72dcd\u003c/code\u003e\u003c/a\u003e revert \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2590\"\u003e#2590\u003c/a\u003e (Call GetExtended[Tcp|Udp]Table twice under free-threaded build)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8773698006d387db90b3982d78fd4ff6b2ebe71c\"\u003e\u003ccode\u003e8773698\u003c/code\u003e\u003c/a\u003e small refact around UTXENT_MUTEX_LOCK\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/13b711fc3ffa384d481e03881e46ae48009c4eeb\"\u003e\u003ccode\u003e13b711f\u003c/code\u003e\u003c/a\u003e Lock around uses of getutent/setutent/endutent (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2615\"\u003e#2615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/release-7.0.0...release-7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\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/theskumar/python-dotenv/commit/16e660d384b942b11879b44500afbbe021650448\"\u003e\u003ccode\u003e16e660d\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.0 → 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/667e82f18d6e5306894c8746c46b1da2d031bd23\"\u003e\u003ccode\u003e667e82f\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/9d85edb3b8652de4601f9ad8a7a49ad9909f898a\"\u003e\u003ccode\u003e9d85edb\u003c/code\u003e\u003c/a\u003e fix(cli): issue with execvpe on Windows (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8411987b9301f716245074872afa30646e9b9eb7\"\u003e\u003ccode\u003e8411987\u003c/code\u003e\u003c/a\u003e fix: ensure find_dotenv work reliably on python 3.13 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/01f899733de664cda0550207067eb36a1795062f\"\u003e\u003ccode\u003e01f8997\u003c/code\u003e\u003c/a\u003e docs update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.2 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\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 `ruamel-yaml` from 0.18.10 to 0.18.15\n\nUpdates `smart-open` from 7.1.0 to 7.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/releases\"\u003esmart-open's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003episkvorky/smart_open#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003episkvorky/smart_open#877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003episkvorky/smart_open#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003episkvorky/smart_open#875\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0.post1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003episkvorky/smart_open#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI badge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003episkvorky/smart_open#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003episkvorky/smart_open#871\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nThis version was yanked from PyPI because \u003ccode\u003epyproject.toml\u003c/code\u003e falsely claimed that python 3.7 was still supported.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003episkvorky/smart_open#857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003episkvorky/smart_open#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003episkvorky/smart_open#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003episkvorky/smart_open#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003episkvorky/smart_open#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003episkvorky/smart_open#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eModernize python packaging by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003episkvorky/smart_open#851\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.2.0\u003c/h2\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/blob/develop/CHANGELOG.md\"\u003esmart-open's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.3.1, 2025-09-08\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003e#877\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003e#878\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003e#875\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0.post1, 2025-07-03\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003e#868\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003e#867\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix CI badge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003e#869\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0, 2025-07-01\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003e#857\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003e#853\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003e#861\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003e#864\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003e#854\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernize python packaging (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003e#851\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/c17ae23c1cda0ba84d72ae12dc38442a57bd69e0\"\u003e\u003ccode\u003ec17ae23\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/b54438fb7d624cac8cde33feaea5ba22017d0d7e\"\u003e\u003ccode\u003eb54438f\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/676099ecc7889b3def7981ac56f888d8fcbb4a9b\"\u003e\u003ccode\u003e676099e\u003c/code\u003e\u003c/a\u003e Add .xz and increase performance of compression module (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/35843b97205a0fedec42bd3d3fa6d1afba6158e1\"\u003e\u003ccode\u003e35843b9\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5fefc681d16d0cbdb6a750d3209530a7ef549b98\"\u003e\u003ccode\u003e5fefc68\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/877\"\u003e#877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/414e2c45d0cbf49c38c677ce4b468e537386a4b0\"\u003e\u003ccode\u003e414e2c4\u003c/code\u003e\u003c/a\u003e Fix release.sh for the final merge back into develop (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/872\"\u003e#872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5313e526440b4ad53dd8850a3e53db9f35dc6fab\"\u003e\u003ccode\u003e5313e52\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/baed6541f6fdc1e48cf40cff5ca038bfa5db4543\"\u003e\u003ccode\u003ebaed654\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/aed8895e2b7463d624e36c98ef5585d243e7612d\"\u003e\u003ccode\u003eaed8895\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/69751d5405d7be4f57885ceba8811dcfa8ebea62\"\u003e\u003ccode\u003e69751d5\u003c/code\u003e\u003c/a\u003e Drop 3.7 support in pyproject.toml (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/871\"\u003e#871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.1.0...v7.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\n...\n\n_Description has been truncated_","html_url":"https://github.com/markhallen/dependabot-test-meltano/pull/40","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/markhallen%2Fdependabot-test-meltano/issues/40","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/40/packages"},{"uuid":"2878655665","node_id":"PR_kwDOLMDPB86rlMyx","number":216,"state":"open","title":"Bump the minor group with 10 updates","user":"dependabot[bot]","labels":["part:tooling","type:tech-debt","part:dispatcher"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-01T15:08:58.000Z","updated_at":"2025-10-01T16:23:11.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor","update_count":10,"packages":[{"name":"asyncclick","old_version":"8.1.8","new_version":"8.2.2.2","repository_url":"https://github.com/python-trio/asyncclick"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"markdown","old_version":"3.8.2","new_version":"3.9","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mkdocs-macros-plugin","old_version":"1.3.9","new_version":"1.4.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"mypy","old_version":"1.17.1","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"types-markdown","old_version":"3.8.0.20250809","new_version":"3.9.0.20250906","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-protobuf","old_version":"6.30.2.20250703","new_version":"6.32.1.20250918","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pytest-mock","old_version":"3.14.1","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"hypothesis","old_version":"6.136.8","new_version":"6.140.2","repository_url":"https://github.com/HypothesisWorks/hypothesis"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor group with 10 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [asyncclick](https://github.com/python-trio/asyncclick) | `8.1.8` | `8.2.2.2` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8.2` | `3.9` |\n| [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin) | `1.3.9` | `1.4.0` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.18.2` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.8.0.20250809` | `3.9.0.20250906` |\n| [types-protobuf](https://github.com/typeshed-internal/stub_uploader) | `6.30.2.20250703` | `6.32.1.20250918` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.1` | `3.15.1` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.136.8` | `6.140.2` |\n\nUpdates `asyncclick` from 8.1.8 to 8.2.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/asyncclick/blob/main/CHANGES.rst\"\u003easyncclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: asyncclick\u003c/p\u003e\n\u003ch2\u003easyncclick 8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop the \u003cstrong\u003eversion\u003c/strong\u003e attribute. Use :mod:\u003ccode\u003epkg_resouces\u003c/code\u003e or\n:mod:\u003ccode\u003eimportlib.metadata\u003c/code\u003e (since Python 3.8) instead.\u003c/li\u003e\n\u003cli\u003eDrop enter_context and enter_async_context. Use\n\u003ccode\u003eContext.with_resource\u003c/code\u003eand \u003ccode\u003eContext.with_async_resource\u003c/code\u003e\ninstead.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eContext.close()\u003c/code\u003e method is now async and thus has been\nrenamed to \u003ccode\u003eContext.aclose()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eYou can now select the AnyIO back-end to use with the\n\u003ccode\u003e@asyncclick.async_backend(NAME)\u003c/code\u003e decorator. The old method of setting\n\u003ccode\u003easyncclick.anyio_backend=NAME\u003c/code\u003e still works.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix flag value handling for flag options with a provided type. :issue:\u003ccode\u003e2894\u003c/code\u003e\n:issue:\u003ccode\u003e2897\u003c/code\u003e :pr:\u003ccode\u003e2930\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix shell completion for nested groups. :issue:\u003ccode\u003e2906\u003c/code\u003e :pr:\u003ccode\u003e2907\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFlush \u003ccode\u003esys.stderr\u003c/code\u003e at the end of \u003ccode\u003eCliRunner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e2682\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix EOF handling for stdin input in CliRunner. :issue:\u003ccode\u003e2787\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-trio/asyncclick/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 25.1.0 to 25.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild gallery docker image with python3-slim and reduce image size (\u003ca href=\"https://redirect.github.com/psf/black/issues/4686\"\u003e#4686\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/af0ba72a73598c76189d6dd1b21d8532255d5942\"\u003e\u003ccode\u003eaf0ba72\u003c/code\u003e\u003c/a\u003e Prepare docs for release 25.9.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ffc01a027580d99401abb3197e83d50dc4f4c746\"\u003e\u003ccode\u003effc01a0\u003c/code\u003e\u003c/a\u003e Fix schema generation error caused by new click version (\u003ca href=\"https://redirect.github.com/psf/black/issues/4750\"\u003e#4750\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/626b32fe2b5387656be6694da9a4b7a3148fb892\"\u003e\u003ccode\u003e626b32f\u003c/code\u003e\u003c/a\u003e Add normalizing for \u003ccode\u003e\\r\u003c/code\u003e style newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/57a461258f324e33bca189b2eb49d7f7a944ffe7\"\u003e\u003ccode\u003e57a4612\u003c/code\u003e\u003c/a\u003e Fix mypy type issue (\u003ca href=\"https://redirect.github.com/psf/black/issues/4745\"\u003e#4745\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4f6ad7cf8c3092e0fb4d82f54fe77ccde134468a\"\u003e\u003ccode\u003e4f6ad7c\u003c/code\u003e\u003c/a\u003e Wrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/24f516961720c5578069dee30415b776359b7be5\"\u003e\u003ccode\u003e24f5169\u003c/code\u003e\u003c/a\u003e ci: Run diff-shades on unstable instead of preview (\u003ca href=\"https://redirect.github.com/psf/black/issues/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4d55e6017993ee3f0927524e8bc19ead8de9e8ed\"\u003e\u003ccode\u003e4d55e60\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0cf39efdbc3aaea455f95d31e5b42efb6bd61478\"\u003e\u003ccode\u003e0cf39ef\u003c/code\u003e\u003c/a\u003e Improve the performance of get_string_prefix (\u003ca href=\"https://redirect.github.com/psf/black/issues/4742\"\u003e#4742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/1f779dec013db37475fa56a5c9939a09eab7e7d6\"\u003e\u003ccode\u003e1f779de\u003c/code\u003e\u003c/a\u003e Fix line ranges decorator edge case (\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/203fd6b5cdad975178b8174394a7f7fb13d14f02\"\u003e\u003ccode\u003e203fd6b\u003c/code\u003e\u003c/a\u003e Optimize Line string method (\u003ca href=\"https://redirect.github.com/psf/black/issues/4739\"\u003e#4739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.1.0...25.9.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.8.2 to 3.9\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.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\u003c/blockquote\u003e\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\u003cp\u003etitle: Changelog\ntoc_depth: 2\u003c/p\u003e\n\u003ch1\u003ePython-Markdown Changelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.1.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to the\n\u003ca href=\"https://packaging.python.org/en/latest/specifications/version-specifiers/\"\u003ePython Version Specification\u003c/a\u003e.\nSee the \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/contributing.md\"\u003eContributing Guide\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003e[Unreleased]\u003c/h2\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 infinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\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\u003c/blockquote\u003e\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/f39cf84a24124526c1a0efbe52219fa9950774f6\"\u003e\u003ccode\u003ef39cf84\u003c/code\u003e\u003c/a\u003e Bump version to 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07bf2076623be5de9952e1f35bfb8c218b699300\"\u003e\u003ccode\u003e07bf207\u003c/code\u003e\u003c/a\u003e Order footnotes by reference\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/23c301de28e12426408656efdfa153b11d4ff558\"\u003e\u003ccode\u003e23c301d\u003c/code\u003e\u003c/a\u003e Fix failing cases for Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/4669a09894d4a35cd5f5d2106b0da95e48d1a3f9\"\u003e\u003ccode\u003e4669a09\u003c/code\u003e\u003c/a\u003e fix typo\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.8.2...3.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.3.9 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.7, 2024-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: incompatibility with the d2 module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/249\"\u003e#249\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.6, 2024-10-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: complete test framework, using pytest and Mkdocs-Test (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/244\"\u003e#244\u003c/a\u003e)\nA number of automated test cases are implemented.\u003c/li\u003e\n\u003cli\u003eChanged: move from setup.py to pyproject.toml (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.2.0, 2024-09-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: three hooks \u003ccode\u003eregister_variables/macros/filters\u003c/code\u003e to facilitate\ncooperation with other MkDocs plugins.\u003c/li\u003e\n\u003cli\u003eFixed: `define_env() was always required in module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/191\"\u003e#191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: trace the case when no module is found (INFO)\u003c/li\u003e\n\u003cli\u003eImproved documentation, particularly about HTML pages\u003c/li\u003e\n\u003cli\u003eAdded: parameters \u003ccode\u003ej2_comment_start_string\u003c/code\u003e and\n\u003ccode\u003ej2_comment_end_string\u003c/code\u003e to plugin's parameters,\nto specify alternate markers for comments.\u003c/li\u003e\n\u003cli\u003eAdded the multiline parameter \u003ccode\u003eforce_render_paths\u003c/code\u003e in the config file,\nto specify directories or file patterns to be rendered for the case when \u003ccode\u003erender_by_default = false\u003c/code\u003e\n(the \u003ccode\u003erender_macros\u003c/code\u003e parameter in the YAML header of the page\nhas the last word).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.5, 2023-10-31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: git.short_tag (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: Mermaid diagrams in the documentation (Readthedocs)\u003c/li\u003e\n\u003cli\u003eFixed: Changelog was no longer displayed (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/186\"\u003e#186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.4, 2023-08-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: Warning due to filter issue with mkdocs \u0026gt;= 1.5\u003c/li\u003e\n\u003cli\u003eFixed: Debug html tables (including for \u003ccode\u003emacro_info()\u003c/code\u003e) are\nnow readable also in dark mode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.2, 2023-07-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: it is now possible to use macros in page titles, in the\nnav section of the yaml file, or in the level 1 titles;\nthe macros are correctly interpreted in the navigation part\nof the page.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.1, 2023-05-25\u003c/h2\u003e\n\u003ch2\u003e1.0.0-alpha, 2023-04-23\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/fralau/mkdocs-macros-plugin/commit/b1dacfb0fba951fc79d36f50895cda3bed3163f6\"\u003e\u003ccode\u003eb1dacfb\u003c/code\u003e\u003c/a\u003e Delete install_package() function from codebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/4ec687e81b6c1b6ac2ad11f1c8cfae671d86bef0\"\u003e\u003ccode\u003e4ec687e\u003c/code\u003e\u003c/a\u003e Remove auto-install of missing pluglet (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/e9dec13e22f12e4fb36bee8065ab90d5e3b90d6e\"\u003e\u003ccode\u003ee9dec13\u003c/code\u003e\u003c/a\u003e Remove installation of missing pluglet (but meaningful  message) \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/9ef2b98d2b6d9971ecd68da3fcc9360d07373c71\"\u003e\u003ccode\u003e9ef2b98\u003c/code\u003e\u003c/a\u003e Include new function \u003ccode\u003eyaml_support()\u003c/code\u003e from super_collections (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.3.9...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.17.1 to 1.18.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.18.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on recursive alias (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19845\"\u003e19845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd additional guidance for stubtest errors when runtime is \u003ccode\u003eobject.__init__\u003c/code\u003e (Stephen Morton, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19733\"\u003e19733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of None values in f-string expressions in mypyc (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19846\"\u003e19846\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003eAnthony Sottile\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eCharlie Denton\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eCoolCat467\u003c/li\u003e\n\u003cli\u003eDaniel Hnyk\u003c/li\u003e\n\u003cli\u003eEmily\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJahongir Qurbonov\u003c/li\u003e\n\u003cli\u003eJelle Zijlstra\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eOmer Hadari\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003ePrinceNaroliya\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eRobsdedude\u003c/li\u003e\n\u003cli\u003eSaul Shanabrook\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.17\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.17 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features and bug fixes.\nYou can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\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/python/mypy/commit/df05f05555ee62dbdb9960c64cad186172e92be1\"\u003e\u003ccode\u003edf05f05\u003c/code\u003e\u003c/a\u003e remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/01a7a1285d03cb7a330359b22cb462aacb5f9720\"\u003e\u003ccode\u003e01a7a12\u003c/code\u003e\u003c/a\u003e Update changelog for 1.18.2 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19873\"\u003e#19873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ca5abf09f3bfc543ac9c18a364696bc5da20bc03\"\u003e\u003ccode\u003eca5abf0\u003c/code\u003e\u003c/a\u003e Typeshed cherry-pick: Make type of \u003ccode\u003eunitest.mock.Any\u003c/code\u003e a subclass of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python/mypy/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/9d794b57d9c5b03d61caa3286756c05e0ae3021b\"\u003e\u003ccode\u003e9d794b5\u003c/code\u003e\u003c/a\u003e [mypyc] fix: inappropriate \u003ccode\u003eNone\u003c/code\u003es in f-strings (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2c0510c84868b6bb42ef0f305b701e530a85c25f\"\u003e\u003ccode\u003e2c0510c\u003c/code\u003e\u003c/a\u003e stubtest: additional guidance on errors when runtime is object.\u003cstrong\u003einit\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19733\"\u003e#19733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2f3f03c3e39e68dbfa3544c01a34f99803b3e1c2\"\u003e\u003ccode\u003e2f3f03c\u003c/code\u003e\u003c/a\u003e Bump version to 1.18.2+dev for point release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/76698412bc1f3ca99000d52649acd5a0e06aa71d\"\u003e\u003ccode\u003e7669841\u003c/code\u003e\u003c/a\u003e Fix crash on recursive alias in indirection.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19845\"\u003e#19845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/03fbaa941bccc3a9f8aea796d586603b67119bf2\"\u003e\u003ccode\u003e03fbaa9\u003c/code\u003e\u003c/a\u003e bump version to 1.18.1 due to wheels failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b44a1fbf0cf9fd90fd29d6bcd9f64c55dd2fd4c8\"\u003e\u003ccode\u003eb44a1fb\u003c/code\u003e\u003c/a\u003e removed +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7197a99d1aebb1b7a584f82a53c44efb7dddf136\"\u003e\u003ccode\u003e7197a99\u003c/code\u003e\u003c/a\u003e Removed Unreleased in the Changelog for Release 1.18 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.17.1...v1.18.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.8.0.20250809 to 3.9.0.20250906\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.30.2.20250703 to 6.32.1.20250918\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-mock` from 3.14.1 to 3.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-16\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/529\"\u003e#529\u003c/a\u003e: Fixed \u003ccode\u003eitertools._tee object has no attribute error\u003c/code\u003e -- now \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e must be passed to \u003ccode\u003emocker.spy\u003c/code\u003e to duplicate iterators.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-04\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 (EOL) is no longer supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/524\"\u003e#524\u003c/a\u003e: Added \u003ccode\u003espy_return_iter\u003c/code\u003e to \u003ccode\u003emocker.spy\u003c/code\u003e, which contains a duplicate of the return value of the spied method if it is an \u003ccode\u003eIterator\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-16\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#529](https://github.com/pytest-dev/pytest-mock/issues/529) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/529\u0026gt;\u003c/code\u003e_: Fixed \u003ccode\u003eitertools._tee object has no attribute error\u003c/code\u003e -- now \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e must be passed to \u003ccode\u003emocker.spy\u003c/code\u003e to duplicate iterators.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-04\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 (EOL) is no longer supported.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#524](https://github.com/pytest-dev/pytest-mock/issues/524) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/524\u0026gt;\u003c/code\u003e_: Added \u003ccode\u003espy_return_iter\u003c/code\u003e to \u003ccode\u003emocker.spy\u003c/code\u003e, which contains a duplicate of the return value of the spied method if it is an \u003ccode\u003eIterator\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/pytest-dev/pytest-mock/commit/e1b5c62a38c5a05cae614aef3847f240ba50d269\"\u003e\u003ccode\u003ee1b5c62\u003c/code\u003e\u003c/a\u003e Release 3.15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/184eb190d6be417f5f33727bcbc9704909479498\"\u003e\u003ccode\u003e184eb19\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003espy_return_iter\u003c/code\u003e only when explicitly requested (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/4fa0088a0aa85eefb1313bd97adf43889bf1f647\"\u003e\u003ccode\u003e4fa0088\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f5aff33ce71ed4620acc43dc41cb3b198bcf4cb0\"\u003e\u003ccode\u003ef5aff33\u003c/code\u003e\u003c/a\u003e Fix test failure with pytest 8+ and verbose mode (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/adc41873c9d6aa69b87e3f108c93a29c847869aa\"\u003e\u003ccode\u003eadc4187\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/533\"\u003e#533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/95ad5700609aae73c6f767b8cc2ccfb2483e0f5c\"\u003e\u003ccode\u003e95ad570\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/e696bf02c199b1f7d0c48adb450f40e5a75b699a\"\u003e\u003ccode\u003ee696bf0\u003c/code\u003e\u003c/a\u003e Fix standalone mock support (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/5b29b03ce9581cfcd867dd6c04a970fb2c861291\"\u003e\u003ccode\u003e5b29b03\u003c/code\u003e\u003c/a\u003e Fix gen-release-notes script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/7d22ef4e560351832e60687d8bd15ebe2785ff3b\"\u003e\u003ccode\u003e7d22ef4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/528\"\u003e#528\u003c/a\u003e from pytest-dev/release-3.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/90b29f89e2086c139a7b4fea89202faa192ee5a9\"\u003e\u003ccode\u003e90b29f8\u003c/code\u003e\u003c/a\u003e Update CHANGELOG for 3.15.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.14.1...v3.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `time-machine` from 2.16.0 to 2.19.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.136.8 to 6.140.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.140.2\u003c/h2\u003e\n\u003cp\u003eThe automatic switch to the CI \u0026quot;settings profile\u0026quot; now works under tox\n(for \u0026quot;tox \u0026gt;= 4.30.0\u0026quot;).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-140-2\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.140.1\u003c/h2\u003e\n\u003cp\u003eThis patch re-enables the warning for incompatible \u0026quot;shared()\u0026quot;\nstrategies that was first enabled in v6.133.0 but disabled in\nv6.135.15.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-140-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.140.0\u003c/h2\u003e\n\u003cp\u003e\u0026quot;characters()\u0026quot; now validates that the elements of the\n\u0026quot;exclude_characters\u0026quot; and \u0026quot;include_characters\u0026quot; arguments are single\ncharacters, which was always assumed internally. For example,\n\u0026quot;exclude_characters=[\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;]\u0026quot; is valid while\n\u0026quot;exclude_characters=[\u0026quot;ab\u0026quot;]\u0026quot; will now raise an error up-front.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-140-0\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.139.3\u003c/h2\u003e\n\u003cp\u003eAdd \u0026quot;phase\u0026quot; to the hypothesis-specific metadata in observability.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-139-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.139.2\u003c/h2\u003e\n\u003cp\u003eInternal refactoring for new lint rules.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-139-2\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.139.1\u003c/h2\u003e\n\u003cp\u003eFixed another typo in error message around function-scoped fixtures.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-139-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.139.0\u003c/h2\u003e\n\u003cp\u003eAdd \u0026quot;get_current_profile_name()\u0026quot;, which returns the name of the\ncurrent settings profile.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-139-0\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.138.17\u003c/h2\u003e\n\u003cp\u003eFixed typo in error message around function-scoped fixtures.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-138-17\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.138.16\u003c/h2\u003e\n\u003cp\u003eImproved error message for \u0026quot;DeadlineExceeded\u0026quot;.\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/HypothesisWorks/hypothesis/commit/275d4964d1df8f3bcac5eef96c36407d15824b56\"\u003e\u003ccode\u003e275d496\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.140.2 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3b95a47cf9b9c60ff991e7d4e9166d27db3cc09b\"\u003e\u003ccode\u003e3b95a47\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4553\"\u003e#4553\u003c/a\u003e from Liam-DeVoe/tox-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/549d8cda6eb4a72912791326c05932fd6d229e71\"\u003e\u003ccode\u003e549d8cd\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.140.1 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b3146b02162ea8d169dc13d4a5f0aef070aee440\"\u003e\u003ccode\u003eb3146b0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4509\"\u003e#4509\u003c/a\u003e from jobh/fix_shared_strategy_warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/af304d95e662cfb79bd48b23f6ef13dc4ea85fbc\"\u003e\u003ccode\u003eaf304d9\u003c/code\u003e\u003c/a\u003e Remove a redundant hash in calc_label\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/43a65dc74de98efc4d6ff3898efdf0690d487e5e\"\u003e\u003ccode\u003e43a65dc\u003c/code\u003e\u003c/a\u003e Revert changes to integers/floats label calculation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/f1e78f75bc3161d62c05bad9985da969e44797d2\"\u003e\u003ccode\u003ef1e78f7\u003c/code\u003e\u003c/a\u003e Add test for coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c5fa0d4506608725abcb001f6242a39c5be4a83e\"\u003e\u003ccode\u003ec5fa0d4\u003c/code\u003e\u003c/a\u003e formatting, lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b5dc8ff4949d7fa19076f532974eaa9a59b3873d\"\u003e\u003ccode\u003eb5dc8ff\u003c/code\u003e\u003c/a\u003e Update a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7cb9389f53fdc59f2638772894b7896e4e057204\"\u003e\u003ccode\u003e7cb9389\u003c/code\u003e\u003c/a\u003e lint and flatmap\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.136.8...hypothesis-python-6.140.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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\n\n\n\u003c/details\u003e","html_url":"https://github.com/frequenz-floss/frequenz-client-dispatch-python/pull/216","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Ffrequenz-client-dispatch-python/issues/216","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/216/packages"},{"uuid":"2877780013","node_id":"PR_kwDOAWUeYM6rh3At","number":4304,"state":"open","title":"Bump time-machine from 2.14.1 to 2.19.0","user":"dependabot[bot]","labels":["dependencies","python","Minor"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-01T11:01:12.000Z","updated_at":"2025-10-01T11:01:13.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"2.14.1","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.14.1 to 2.19.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.14.1...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=2.14.1\u0026new-version=2.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/alephdata/aleph/pull/4304","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alephdata%2Faleph/issues/4304","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4304/packages"},{"uuid":"2872929337","node_id":"PR_kwDOFHeJu86rPWw5","number":9,"state":"open","title":"Bump time-machine from 2.5.0 to 2.19.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-09-30T05:13:30.000Z","updated_at":"2025-09-30T05:13:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"2.5.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.5.0 to 2.19.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.5.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=2.5.0\u0026new-version=2.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Jeecabs/freqtrade-extra/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jeecabs%2Ffreqtrade-extra/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"},{"uuid":"3465846147","node_id":"PR_kwDOOYeBPM6rJdNv","number":38,"state":"open","title":"chore(deps): bump the runtime-dependencies group across 1 directory with 32 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-29T17:01:11.000Z","updated_at":"2025-09-29T17:01:12.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"runtime-dependencies","update_count":32,"packages":[{"name":"alembic","old_version":"1.15.2","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pip","old_version":"25.0.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.15"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.3.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"structlog","old_version":"25.2.0","new_version":"25.4.0","repository_url":"https://github.com/hynek/structlog"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.34.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"azure-storage-blob","old_version":"12.25.1","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-core","old_version":"1.33.0","new_version":"1.35.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.21.0","new_version":"1.25.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"pymssql","old_version":"2.3.4","new_version":"2.3.7","repository_url":"https://github.com/pymssql/pymssql"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.13","repository_url":"https://github.com/getmoto/moto"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-docker","old_version":"3.2.1","new_version":"3.2.3","repository_url":"https://github.com/avast/pytest-docker"},{"name":"pytest-structlog","old_version":"1.1","new_version":"1.2","repository_url":"https://github.com/wimglenn/pytest-structlog"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"setproctitle","old_version":"1.3.5","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"types-dateparser","old_version":"1.2.0.20250208","new_version":"1.2.2.20250809","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-jsonschema","old_version":"4.23.0.20241208","new_version":"4.25.1.20250822","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-dependencies group with 32 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.15.2` | `1.16.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [pip](https://github.com/pypa/pip) | `25.0.1` | `25.2` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.18.15` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [structlog](https://github.com/hynek/structlog) | `25.2.0` | `25.4.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.34.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.25.1` | `12.26.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.33.0` | `1.35.1` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.21.0` | `1.25.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.3.4` | `2.3.7` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.13` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-docker](https://github.com/avast/pytest-docker) | `3.2.1` | `3.2.3` |\n| [pytest-structlog](https://github.com/wimglenn/pytest-structlog) | `1.1` | `1.2` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.5` | `1.3.7` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [types-dateparser](https://github.com/typeshed-internal/stub_uploader) | `1.2.0.20250208` | `1.2.2.20250809` |\n| [types-jsonschema](https://github.com/typeshed-internal/stub_uploader) | `4.23.0.20241208` | `4.25.1.20250822` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20250913` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n\n\nUpdates `alembic` from 1.15.2 to 1.16.5\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.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.4\u003c/h1\u003e\n\u003cp\u003eReleased: July 10, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue in new \u003ccode\u003epyproject.toml\u003c/code\u003e support where boolean values, such as\nthose used for the \u003ccode\u003erecursive_version_locations\u003c/code\u003e and \u003ccode\u003esourceless\u003c/code\u003e\nconfiguration parameters, would not be accepted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1694\"\u003e#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.3\u003c/h1\u003e\n\u003cp\u003eReleased: July 8, 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 new \u003ccode\u003epyproject_async\u003c/code\u003e template, combining the new \u003ccode\u003epyproject\u003c/code\u003e\ntemplate with the \u003ccode\u003easync\u003c/code\u003e template.  Pull request courtesy Alc-Alc.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1683\"\u003e#1683\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Add \u0026quot;module\u0026quot; post-write hook. This hook type is almost identical to the\nconsole_scripts hook, except it's running \u003ccode\u003epython -m black\u003c/code\u003e instead of\nusing black's \u003ccode\u003econsole_script\u003c/code\u003e. It is mainly useful for tools without\nconsole scripts (e.g. ruff), but has semantics closer to the\nconsole_scripts hook in that it finds the ruff module available to the\nrunning interpreter instead of finding an executable by path. Pull request\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\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 `anyio` from 4.9.0 to 4.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.25.1\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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra by \u003ca href=\"https://github.com/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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.24.1...v4.25.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.1...v4.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUnambiguously quote and escape properties in JSON path rendering by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop python\u0026lt;3.9 backports by \u003ca href=\"https://github.com/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\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/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\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.24.0...v4.24.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.0...v4.24.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculation of evaluated properties by \u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#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\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bkueng\"\u003e\u003ccode\u003e@​bkueng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1326\"\u003epython-jsonschema/jsonschema#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#1351\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.23.0...v4.24.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.24.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/331c38425519b69118d22ebe467ad230fb83a010\"\u003e\u003ccode\u003e331c384\u003c/code\u003e\u003c/a\u003e Add the fix to the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/c1ec0a645e913e83de95995f6efbbd358676abf6\"\u003e\u003ccode\u003ec1ec0a6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1398\"\u003e#1398\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/8e7d594faff13f8f663b306a0d86bea0ce5de6cb\"\u003e\u003ccode\u003e8e7d594\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1399\"\u003e#1399\u003c/a\u003e from python-jsonschema/dependabot/github_actions/act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/460f4fae42664773160f56ccc843a4fcea34f7cf\"\u003e\u003ccode\u003e460f4fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e from sirosen/improve-protocol-init-signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1e58409b71a9696b7bf9938ae8a3a48ef95ab29e\"\u003e\u003ccode\u003e1e58409\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/64bc2171624ef201bdbf35e47780348ce30935c5\"\u003e\u003ccode\u003e64bc217\u003c/code\u003e\u003c/a\u003e Add a typing test for the Validator protocol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6c25741bff889477680f9b0d1aa967ae35c38f43\"\u003e\u003ccode\u003e6c25741\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/bf603d59117f840916709fc87c6625df43d1fe72\"\u003e\u003ccode\u003ebf603d5\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6.4.3 to 6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a916d8f8253baa11bacc60f0868f0bab1e42d526\"\u003e\u003ccode\u003ea916d8f\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/de60f18bd97395a52a11b561eb62963e0ffe9e71\"\u003e\u003ccode\u003ede60f18\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1397\"\u003e#1397\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 25.0.1 to 25.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e25.2 (2025-07-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ccode\u003e[#13506](https://github.com/pypa/pip/issues/13506) \u0026lt;https://github.com/pypa/pip/issues/13506\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAutomatic download resumption and retrying is enabled by default. (\u003ccode\u003e[#13464](https://github.com/pypa/pip/issues/13464) \u0026lt;https://github.com/pypa/pip/issues/13464\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRequires-Python error message displays version clauses in numerical order. (\u003ccode\u003e[#13367](https://github.com/pypa/pip/issues/13367) \u0026lt;https://github.com/pypa/pip/issues/13367\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement getting the order to install a very large number of interdependent packages. (\u003ccode\u003e[#13424](https://github.com/pypa/pip/issues/13424) \u0026lt;https://github.com/pypa/pip/issues/13424\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow time taken instead of \u003ccode\u003eeta 0:00:00\u003c/code\u003e at download completion. (\u003ccode\u003e[#13483](https://github.com/pypa/pip/issues/13483) \u0026lt;https://github.com/pypa/pip/issues/13483\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eSpeed up small CLI tools by removing \u003ccode\u003eimport re\u003c/code\u003e from the console\nscript executable template. (\u003ccode\u003e[#13165](https://github.com/pypa/pip/issues/13165) \u0026lt;https://github.com/pypa/pip/issues/13165\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove warning when cloning from a Git reference that does not look like a commit hash. (\u003ccode\u003e[#12283](https://github.com/pypa/pip/issues/12283) \u0026lt;https://github.com/pypa/pip/issues/12283\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip config debug\u003c/code\u003e now correctly separates options as set by the different files\nat the same level. (\u003ccode\u003e[#12099](https://github.com/pypa/pip/issues/12099) \u0026lt;https://github.com/pypa/pip/issues/12099\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnsure truststore feature remains active even when a proxy is also in use. (\u003ccode\u003e[#13343](https://github.com/pypa/pip/issues/13343) \u0026lt;https://github.com/pypa/pip/issues/13343\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude sub-commands in tab completion. (\u003ccode\u003e[#13140](https://github.com/pypa/pip/issues/13140) \u0026lt;https://github.com/pypa/pip/issues/13140\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip list\u003c/code\u003e with the \u003ccode\u003ejson\u003c/code\u003e or \u003ccode\u003efreeze\u003c/code\u003e format enabled will no longer\ncrash when encountering a package with an invalid version. (\u003ccode\u003e[#13345](https://github.com/pypa/pip/issues/13345) \u0026lt;https://github.com/pypa/pip/issues/13345\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a hint if a system error is raised involving long filenames or path segments on Windows. (\u003ccode\u003e[#13346](https://github.com/pypa/pip/issues/13346) \u0026lt;https://github.com/pypa/pip/issues/13346\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResumed downloads are saved to the HTTP cache like any other normal download. (\u003ccode\u003e[#13441](https://github.com/pypa/pip/issues/13441) \u0026lt;https://github.com/pypa/pip/issues/13441\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfigured verbosity is consistently forwarded while calling Git during\nVCS operations. (\u003ccode\u003e[#13329](https://github.com/pypa/pip/issues/13329) \u0026lt;https://github.com/pypa/pip/issues/13329\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress the progress bar, when running with \u003ccode\u003e--log\u003c/code\u003e and \u003ccode\u003e--quiet\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eConsequently, a new \u003ccode\u003eauto\u003c/code\u003e mode for \u003ccode\u003e--progress-bar\u003c/code\u003e has been added.\n\u003ccode\u003eauto\u003c/code\u003e will enable progress bars unless suppressed by \u003ccode\u003e--quiet\u003c/code\u003e,\nwhile \u003ccode\u003eon\u003c/code\u003e will always enable progress bars. (\u003ccode\u003e[#10915](https://github.com/pypa/pip/issues/10915) \u0026lt;https://github.com/pypa/pip/issues/10915\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local URLs with non-\u003ccode\u003efile\u003c/code\u003e schemes. (\u003ccode\u003e[#13509](https://github.com/pypa/pip/issues/13509) \u0026lt;https://github.com/pypa/pip/issues/13509\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local file URLs on Windows in newer Python versions. (\u003ccode\u003e[#13510](https://github.com/pypa/pip/issues/13510) \u0026lt;https://github.com/pypa/pip/issues/13510\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix remaining test failures in Python 3.14 by adjusting \u003ccode\u003epath_to_url\u003c/code\u003e and similar functions. (\u003ccode\u003e[#13423](https://github.com/pypa/pip/issues/13423) \u0026lt;https://github.com/pypa/pip/issues/13423\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing \u003ccode\u003enetwork\u003c/code\u003e test markings, making the suite pass in offline\nenvironments again. (\u003ccode\u003e[#13378](https://github.com/pypa/pip/issues/13378) \u0026lt;https://github.com/pypa/pip/issues/13378\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CacheControl to 0.14.3\u003c/li\u003e\n\u003cli\u003eUpgrade certifi to 2025.7.14\u003c/li\u003e\n\u003cli\u003eUpgrade distlib to 0.4.0\u003c/li\u003e\n\u003cli\u003eUpgrade msgpack to 1.1.1\u003c/li\u003e\n\u003cli\u003eUpgrade platformdirs to 4.3.8\u003c/li\u003e\n\u003cli\u003eUpgrade pygments to 2.19.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.32.4\u003c/li\u003e\n\u003cli\u003eUpgrade resolvelib to 1.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/pip/commit/2e05cae3da2cfafa6dce58167a25b7dba4bc2a33\"\u003e\u003ccode\u003e2e05cae\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/f24906109c84ca51eef57a4f925298d38ff31df3\"\u003e\u003ccode\u003ef249061\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/78d15a5da09c6fbc5c2cd88fb5bd67bfd7fb0637\"\u003e\u003ccode\u003e78d15a5\u003c/code\u003e\u003c/a\u003e Copyedit news entries before 25.2 (again)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4fe68d78ae8b117ad413ec61c518dd600af08bf0\"\u003e\u003ccode\u003e4fe68d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13506\"\u003e#13506\u003c/a\u003e from ichard26/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/775a86f2bac8894771911ab068b18f09550cb6f0\"\u003e\u003ccode\u003e775a86f\u003c/code\u003e\u003c/a\u003e Fix broken unit tests \u0026amp; xfail weird failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2773b13baa59ec68b03df9f0f73e4e3c21fcd958\"\u003e\u003ccode\u003e2773b13\u003c/code\u003e\u003c/a\u003e Reformat and add --allow-unix-socket to pytest config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e384d1032c189312ac21f23844c9c6f1f4750eb1\"\u003e\u003ccode\u003ee384d10\u003c/code\u003e\u003c/a\u003e Declare Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4117dc7c6b606d825904ffbe35d51012923374f4\"\u003e\u003ccode\u003e4117dc7\u003c/code\u003e\u003c/a\u003e Always remove authority section when cleaning local URL path (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13510\"\u003e#13510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2e21934b5c35a0e6b41fd586399cd36ed304c03c\"\u003e\u003ccode\u003e2e21934\u003c/code\u003e\u003c/a\u003e Fix cleaning of local URLs with VCS schemes (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13509\"\u003e#13509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/853a593191d7205b837d32a72e0eb7e7b81e1821\"\u003e\u003ccode\u003e853a593\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003epath_to_url()\u003c/code\u003e tests (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13496\"\u003e#13496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/25.0.1...25.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/HISTORY.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.1.0\u003c/h1\u003e\n\u003cp\u003e2025-09-17\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2581_, [Windows]: publish ARM64 wheels.  (patch by Matthieu Darbois)\u003c/li\u003e\n\u003cli\u003e2571_, [FreeBSD]: Dropped support for FreeBSD 8 and earlier. FreeBSD 8 was\nmaintained from 2009 to 2013.\u003c/li\u003e\n\u003cli\u003e2575_: introduced \u003ccode\u003edprint\u003c/code\u003e CLI tool to format .yml and .md files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2473_, [macOS]: Fix build issue on macOS 11 and lower.\u003c/li\u003e\n\u003cli\u003e2494_, [Windows]: All APIs dealing with paths, such as\n\u003ccode\u003eProcess.memory_maps()\u003c/code\u003e\u003cem\u003e, \u003ccode\u003eProcess.exe()\u003c/code\u003e\u003c/em\u003e and \u003ccode\u003eProcess.open_files()\u003c/code\u003e_ does\nnot properly handle UNC paths. Paths such as \u003ccode\u003e\\\\??\\\\C:\\\\Windows\\\\Temp\u003c/code\u003e and\n\u003ccode\u003e'\\\\Device\\\\HarddiskVolume1\\\\Windows\\\\Temp'\u003c/code\u003e are now converted to\n\u003ccode\u003eC:\\\\Windows\\\\Temp\u003c/code\u003e.  (patch by Ben Peddell)\u003c/li\u003e\n\u003cli\u003e2506_, [Windows]: Windows service APIs had issues with unicode services using\nspecial characters in their name.\u003c/li\u003e\n\u003cli\u003e2514_, [Linux]: \u003ccode\u003eProcess.cwd()\u003c/code\u003e_ sometimes fail with \u003ccode\u003eFileNotFoundError\u003c/code\u003e due\nto a race condition.\u003c/li\u003e\n\u003cli\u003e2526_, [Linux]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e\u003cem\u003e, which is used to univocally\nidentify a process over time, is subject to system clock updates, and as such\ncan lead to \u003ccode\u003eProcess.is_running()\u003c/code\u003e\u003c/em\u003e returning a wrong result. A monotonic\ncreation time is now used instead.  (patch by Jonathan Kohler)\u003c/li\u003e\n\u003cli\u003e2528_, [Linux]: \u003ccode\u003eProcess.children()\u003c/code\u003e_ may raise \u003ccode\u003ePermissionError\u003c/code\u003e. It will\nnow raise \u003ccode\u003eAccessDenied\u003c/code\u003e_ instead.\u003c/li\u003e\n\u003cli\u003e2540_, [macOS]: \u003ccode\u003eboot_time()\u003c/code\u003e_ is off by 45 seconds (C precision issue).\u003c/li\u003e\n\u003cli\u003e2541_, 2570_, 2578_ [Linux], [macOS], [NetBSD]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e_ does\nnot reflect system clock updates.\u003c/li\u003e\n\u003cli\u003e2542_: if system clock is updated \u003ccode\u003eProcess.children()\u003c/code\u003e_ and\n\u003ccode\u003eProcess.parent()\u003c/code\u003e_ may not be able to return the right information.\u003c/li\u003e\n\u003cli\u003e2545_: [Illumos]: Fix handling of MIB2_UDP_ENTRY in \u003ccode\u003enet_connections()\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003e2552_, [Windows]: \u003ccode\u003eboot_time()\u003c/code\u003e_ didn't take into account the time spent\nduring suspend / hibernation.\u003c/li\u003e\n\u003cli\u003e2560_, [Linux]: \u003ccode\u003eProcess.memory_maps()\u003c/code\u003e_ may crash with \u003ccode\u003eIndexError\u003c/code\u003e on\nRISCV64 due to a malformed \u003ccode\u003e/proc/{PID}/smaps\u003c/code\u003e file.  (patch by Julien\nStephan)\u003c/li\u003e\n\u003cli\u003e2586_, [macOS], [CRITICAL]: fixed different places in C code which can\ntrigger a segfault.\u003c/li\u003e\n\u003cli\u003e2604_, [Linux]: \u003ccode\u003evirtual_memory()\u003c/code\u003e_ \u0026quot;used\u0026quot; memory does not match recent\nversions of \u003ccode\u003efree\u003c/code\u003e CLI utility.  (patch by Isaac K. Ko)\u003c/li\u003e\n\u003cli\u003e2605_, [Linux]: \u003ccode\u003epsutil.sensors_battery()\u003c/code\u003e reports a negative amount for\nseconds left.\u003c/li\u003e\n\u003cli\u003e2607_, [Windows]: \u003ccode\u003eWindowsService.description()\u003c/code\u003e method may fail with\n\u003ccode\u003eERROR_NOT_FOUND\u003c/code\u003e. Now it returns an empty string instead.\u003c/li\u003e\n\u003cli\u003e2610:, [macOS], [CRITICAL]: fix \u003ccode\u003ecpu_freq()\u003c/code\u003e_ segfault on ARM architectures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/0d18187e79b349e577fadabd3589f8fdbf99bf5a\"\u003e\u003ccode\u003e0d18187\u003c/code\u003e\u003c/a\u003e Revert HISTORY notes about \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e. We still do publish 3.6 and 3.7 wheels.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/229e2de232860fe22e2c2884c20b8979c643d5c6\"\u003e\u003ccode\u003e229e2de\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/fb75b28226ec8e6b9e5b9eefa05a62de579cc114\"\u003e\u003ccode\u003efb75b28\u003c/code\u003e\u003c/a\u003e Chore: skip CI tests except on Python 3.8 and 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/3a4c01638bc61c77f43a05aea5bc6e1ddc81c6c4\"\u003e\u003ccode\u003e3a4c016\u003c/code\u003e\u003c/a\u003e Stop publishing wheels for Python 3.6 and 3.7 (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/83e4f7fdd76051dd8e0eeed99e2bf5fc881a2960\"\u003e\u003ccode\u003e83e4f7f\u003c/code\u003e\u003c/a\u003e OSX: disable failing test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/df0d4e2637917377bd5971f1745e881b75f2c6e2\"\u003e\u003ccode\u003edf0d4e2\u003c/code\u003e\u003c/a\u003e Call GetExtended[Tcp|Udp]Table twice under free-threaded build (round 2) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2627\"\u003e#2627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/dcbfb81e863fa2b8688ccd8da27b09b539404688\"\u003e\u003ccode\u003edcbfb81\u003c/code\u003e\u003c/a\u003e [Windows] fix unicode issues around service APIs (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2626\"\u003e#2626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ef72dcd076f1cec94ba50ec30b5dbebb272845d0\"\u003e\u003ccode\u003eef72dcd\u003c/code\u003e\u003c/a\u003e revert \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2590\"\u003e#2590\u003c/a\u003e (Call GetExtended[Tcp|Udp]Table twice under free-threaded build)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8773698006d387db90b3982d78fd4ff6b2ebe71c\"\u003e\u003ccode\u003e8773698\u003c/code\u003e\u003c/a\u003e small refact around UTXENT_MUTEX_LOCK\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/13b711fc3ffa384d481e03881e46ae48009c4eeb\"\u003e\u003ccode\u003e13b711f\u003c/code\u003e\u003c/a\u003e Lock around uses of getutent/setutent/endutent (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2615\"\u003e#2615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/release-7.0.0...release-7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\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/theskumar/python-dotenv/commit/16e660d384b942b11879b44500afbbe021650448\"\u003e\u003ccode\u003e16e660d\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.0 → 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/667e82f18d6e5306894c8746c46b1da2d031bd23\"\u003e\u003ccode\u003e667e82f\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/9d85edb3b8652de4601f9ad8a7a49ad9909f898a\"\u003e\u003ccode\u003e9d85edb\u003c/code\u003e\u003c/a\u003e fix(cli): issue with execvpe on Windows (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8411987b9301f716245074872afa30646e9b9eb7\"\u003e\u003ccode\u003e8411987\u003c/code\u003e\u003c/a\u003e fix: ensure find_dotenv work reliably on python 3.13 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/01f899733de664cda0550207067eb36a1795062f\"\u003e\u003ccode\u003e01f8997\u003c/code\u003e\u003c/a\u003e docs update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.2 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\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 `ruamel-yaml` from 0.18.10 to 0.18.15\n\nUpdates `smart-open` from 7.1.0 to 7.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/releases\"\u003esmart-open's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003episkvorky/smart_open#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003episkvorky/smart_open#877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003episkvorky/smart_open#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003episkvorky/smart_open#875\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0.post1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003episkvorky/smart_open#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI badge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003episkvorky/smart_open#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003episkvorky/smart_open#871\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nThis version was yanked from PyPI because \u003ccode\u003epyproject.toml\u003c/code\u003e falsely claimed that python 3.7 was still supported.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003episkvorky/smart_open#857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003episkvorky/smart_open#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003episkvorky/smart_open#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003episkvorky/smart_open#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003episkvorky/smart_open#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003episkvorky/smart_open#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eModernize python packaging by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003episkvorky/smart_open#851\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.2.0\u003c/h2\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/blob/develop/CHANGELOG.md\"\u003esmart-open's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.3.1, 2025-09-08\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003e#877\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003e#878\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003e#875\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0.post1, 2025-07-03\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003e#868\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003e#867\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix CI badge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003e#869\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0, 2025-07-01\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003e#857\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003e#853\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003e#861\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003e#864\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003e#854\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernize python packaging (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003e#851\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/c17ae23c1cda0ba84d72ae12dc38442a57bd69e0\"\u003e\u003ccode\u003ec17ae23\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/b54438fb7d624cac8cde33feaea5ba22017d0d7e\"\u003e\u003ccode\u003eb54438f\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/676099ecc7889b3def7981ac56f888d8fcbb4a9b\"\u003e\u003ccode\u003e676099e\u003c/code\u003e\u003c/a\u003e Add .xz and increase performance of compression module (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/35843b97205a0fedec42bd3d3fa6d1afba6158e1\"\u003e\u003ccode\u003e35843b9\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5fefc681d16d0cbdb6a750d3209530a7ef549b98\"\u003e\u003ccode\u003e5fefc68\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/877\"\u003e#877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/414e2c45d0cbf49c38c677ce4b468e537386a4b0\"\u003e\u003ccode\u003e414e2c4\u003c/code\u003e\u003c/a\u003e Fix release.sh for the final merge back into develop (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/872\"\u003e#872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5313e526440b4ad53dd8850a3e53db9f35dc6fab\"\u003e\u003ccode\u003e5313e52\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/baed6541f6fdc1e48cf40cff5ca038bfa5db4543\"\u003e\u003ccode\u003ebaed654\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/aed8895e2b7463d624e36c98ef5585d243e7612d\"\u003e\u003ccode\u003eaed8895\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/69751d5405d7be4f57885ceba8811dcfa8ebea62\"\u003e\u003ccode\u003e69751d5\u003c/code\u003e\u003c/a\u003e Drop 3.7 support in pyproject.toml (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/871\"\u003e#871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.1.0...v7.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003csum...\n\n_Description has been truncated_","html_url":"https://github.com/markhallen/dependabot-test-meltano/pull/38","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/markhallen%2Fdependabot-test-meltano/issues/38","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/38/packages"},{"uuid":"2849315441","node_id":"PR_kwDOOYeBPM6p1Rpx","number":37,"state":"closed","title":"chore(deps): bump the runtime-dependencies group across 1 directory with 31 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2025-09-29T13:37:34.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-22T12:34:20.000Z","updated_at":"2025-09-29T13:37:34.000Z","time_to_close":608594,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"runtime-dependencies","update_count":31,"packages":[{"name":"alembic","old_version":"1.15.2","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pip","old_version":"25.0.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.15"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.3.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"structlog","old_version":"25.2.0","new_version":"25.4.0","repository_url":"https://github.com/hynek/structlog"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.34.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"azure-storage-blob","old_version":"12.25.1","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-core","old_version":"1.33.0","new_version":"1.35.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.21.0","new_version":"1.25.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"pymssql","old_version":"2.3.4","new_version":"2.3.7","repository_url":"https://github.com/pymssql/pymssql"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.13","repository_url":"https://github.com/getmoto/moto"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-docker","old_version":"3.2.1","new_version":"3.2.3","repository_url":"https://github.com/avast/pytest-docker"},{"name":"pytest-structlog","old_version":"1.1","new_version":"1.2","repository_url":"https://github.com/wimglenn/pytest-structlog"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"setproctitle","old_version":"1.3.5","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"types-dateparser","old_version":"1.2.0.20250208","new_version":"1.2.2.20250809","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-jsonschema","old_version":"4.23.0.20241208","new_version":"4.25.1.20250822","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-dependencies group with 31 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.15.2` | `1.16.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [pip](https://github.com/pypa/pip) | `25.0.1` | `25.2` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.18.15` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [structlog](https://github.com/hynek/structlog) | `25.2.0` | `25.4.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.34.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.25.1` | `12.26.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.33.0` | `1.35.1` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.21.0` | `1.25.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.3.4` | `2.3.7` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.13` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-docker](https://github.com/avast/pytest-docker) | `3.2.1` | `3.2.3` |\n| [pytest-structlog](https://github.com/wimglenn/pytest-structlog) | `1.1` | `1.2` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.5` | `1.3.7` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [types-dateparser](https://github.com/typeshed-internal/stub_uploader) | `1.2.0.20250208` | `1.2.2.20250809` |\n| [types-jsonschema](https://github.com/typeshed-internal/stub_uploader) | `4.23.0.20241208` | `4.25.1.20250822` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20250913` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n\n\nUpdates `alembic` from 1.15.2 to 1.16.5\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.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.4\u003c/h1\u003e\n\u003cp\u003eReleased: July 10, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue in new \u003ccode\u003epyproject.toml\u003c/code\u003e support where boolean values, such as\nthose used for the \u003ccode\u003erecursive_version_locations\u003c/code\u003e and \u003ccode\u003esourceless\u003c/code\u003e\nconfiguration parameters, would not be accepted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1694\"\u003e#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.3\u003c/h1\u003e\n\u003cp\u003eReleased: July 8, 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 new \u003ccode\u003epyproject_async\u003c/code\u003e template, combining the new \u003ccode\u003epyproject\u003c/code\u003e\ntemplate with the \u003ccode\u003easync\u003c/code\u003e template.  Pull request courtesy Alc-Alc.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1683\"\u003e#1683\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Add \u0026quot;module\u0026quot; post-write hook. This hook type is almost identical to the\nconsole_scripts hook, except it's running \u003ccode\u003epython -m black\u003c/code\u003e instead of\nusing black's \u003ccode\u003econsole_script\u003c/code\u003e. It is mainly useful for tools without\nconsole scripts (e.g. ruff), but has semantics closer to the\nconsole_scripts hook in that it finds the ruff module available to the\nrunning interpreter instead of finding an executable by path. Pull request\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\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 `anyio` from 4.9.0 to 4.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded 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\n(\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\nkeyword argument\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/27abc2c47526feca2c1ba29a2f48d65f4281c6c2\"\u003e\u003ccode\u003e27abc2c\u003c/code\u003e\u003c/a\u003e Bumped up the version, second attempt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.25.1\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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra by \u003ca href=\"https://github.com/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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.24.1...v4.25.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.1...v4.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUnambiguously quote and escape properties in JSON path rendering by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop python\u0026lt;3.9 backports by \u003ca href=\"https://github.com/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\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/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\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.24.0...v4.24.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.0...v4.24.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculation of evaluated properties by \u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#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\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bkueng\"\u003e\u003ccode\u003e@​bkueng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1326\"\u003epython-jsonschema/jsonschema#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#1351\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.23.0...v4.24.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.24.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/331c38425519b69118d22ebe467ad230fb83a010\"\u003e\u003ccode\u003e331c384\u003c/code\u003e\u003c/a\u003e Add the fix to the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/c1ec0a645e913e83de95995f6efbbd358676abf6\"\u003e\u003ccode\u003ec1ec0a6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1398\"\u003e#1398\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/8e7d594faff13f8f663b306a0d86bea0ce5de6cb\"\u003e\u003ccode\u003e8e7d594\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1399\"\u003e#1399\u003c/a\u003e from python-jsonschema/dependabot/github_actions/act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/460f4fae42664773160f56ccc843a4fcea34f7cf\"\u003e\u003ccode\u003e460f4fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e from sirosen/improve-protocol-init-signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1e58409b71a9696b7bf9938ae8a3a48ef95ab29e\"\u003e\u003ccode\u003e1e58409\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/64bc2171624ef201bdbf35e47780348ce30935c5\"\u003e\u003ccode\u003e64bc217\u003c/code\u003e\u003c/a\u003e Add a typing test for the Validator protocol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6c25741bff889477680f9b0d1aa967ae35c38f43\"\u003e\u003ccode\u003e6c25741\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/bf603d59117f840916709fc87c6625df43d1fe72\"\u003e\u003ccode\u003ebf603d5\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6.4.3 to 6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a916d8f8253baa11bacc60f0868f0bab1e42d526\"\u003e\u003ccode\u003ea916d8f\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/de60f18bd97395a52a11b561eb62963e0ffe9e71\"\u003e\u003ccode\u003ede60f18\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1397\"\u003e#1397\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 25.0.1 to 25.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e25.2 (2025-07-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ccode\u003e[#13506](https://github.com/pypa/pip/issues/13506) \u0026lt;https://github.com/pypa/pip/issues/13506\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAutomatic download resumption and retrying is enabled by default. (\u003ccode\u003e[#13464](https://github.com/pypa/pip/issues/13464) \u0026lt;https://github.com/pypa/pip/issues/13464\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRequires-Python error message displays version clauses in numerical order. (\u003ccode\u003e[#13367](https://github.com/pypa/pip/issues/13367) \u0026lt;https://github.com/pypa/pip/issues/13367\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement getting the order to install a very large number of interdependent packages. (\u003ccode\u003e[#13424](https://github.com/pypa/pip/issues/13424) \u0026lt;https://github.com/pypa/pip/issues/13424\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow time taken instead of \u003ccode\u003eeta 0:00:00\u003c/code\u003e at download completion. (\u003ccode\u003e[#13483](https://github.com/pypa/pip/issues/13483) \u0026lt;https://github.com/pypa/pip/issues/13483\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eSpeed up small CLI tools by removing \u003ccode\u003eimport re\u003c/code\u003e from the console\nscript executable template. (\u003ccode\u003e[#13165](https://github.com/pypa/pip/issues/13165) \u0026lt;https://github.com/pypa/pip/issues/13165\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove warning when cloning from a Git reference that does not look like a commit hash. (\u003ccode\u003e[#12283](https://github.com/pypa/pip/issues/12283) \u0026lt;https://github.com/pypa/pip/issues/12283\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip config debug\u003c/code\u003e now correctly separates options as set by the different files\nat the same level. (\u003ccode\u003e[#12099](https://github.com/pypa/pip/issues/12099) \u0026lt;https://github.com/pypa/pip/issues/12099\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnsure truststore feature remains active even when a proxy is also in use. (\u003ccode\u003e[#13343](https://github.com/pypa/pip/issues/13343) \u0026lt;https://github.com/pypa/pip/issues/13343\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude sub-commands in tab completion. (\u003ccode\u003e[#13140](https://github.com/pypa/pip/issues/13140) \u0026lt;https://github.com/pypa/pip/issues/13140\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip list\u003c/code\u003e with the \u003ccode\u003ejson\u003c/code\u003e or \u003ccode\u003efreeze\u003c/code\u003e format enabled will no longer\ncrash when encountering a package with an invalid version. (\u003ccode\u003e[#13345](https://github.com/pypa/pip/issues/13345) \u0026lt;https://github.com/pypa/pip/issues/13345\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a hint if a system error is raised involving long filenames or path segments on Windows. (\u003ccode\u003e[#13346](https://github.com/pypa/pip/issues/13346) \u0026lt;https://github.com/pypa/pip/issues/13346\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResumed downloads are saved to the HTTP cache like any other normal download. (\u003ccode\u003e[#13441](https://github.com/pypa/pip/issues/13441) \u0026lt;https://github.com/pypa/pip/issues/13441\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfigured verbosity is consistently forwarded while calling Git during\nVCS operations. (\u003ccode\u003e[#13329](https://github.com/pypa/pip/issues/13329) \u0026lt;https://github.com/pypa/pip/issues/13329\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress the progress bar, when running with \u003ccode\u003e--log\u003c/code\u003e and \u003ccode\u003e--quiet\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eConsequently, a new \u003ccode\u003eauto\u003c/code\u003e mode for \u003ccode\u003e--progress-bar\u003c/code\u003e has been added.\n\u003ccode\u003eauto\u003c/code\u003e will enable progress bars unless suppressed by \u003ccode\u003e--quiet\u003c/code\u003e,\nwhile \u003ccode\u003eon\u003c/code\u003e will always enable progress bars. (\u003ccode\u003e[#10915](https://github.com/pypa/pip/issues/10915) \u0026lt;https://github.com/pypa/pip/issues/10915\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local URLs with non-\u003ccode\u003efile\u003c/code\u003e schemes. (\u003ccode\u003e[#13509](https://github.com/pypa/pip/issues/13509) \u0026lt;https://github.com/pypa/pip/issues/13509\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local file URLs on Windows in newer Python versions. (\u003ccode\u003e[#13510](https://github.com/pypa/pip/issues/13510) \u0026lt;https://github.com/pypa/pip/issues/13510\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix remaining test failures in Python 3.14 by adjusting \u003ccode\u003epath_to_url\u003c/code\u003e and similar functions. (\u003ccode\u003e[#13423](https://github.com/pypa/pip/issues/13423) \u0026lt;https://github.com/pypa/pip/issues/13423\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing \u003ccode\u003enetwork\u003c/code\u003e test markings, making the suite pass in offline\nenvironments again. (\u003ccode\u003e[#13378](https://github.com/pypa/pip/issues/13378) \u0026lt;https://github.com/pypa/pip/issues/13378\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CacheControl to 0.14.3\u003c/li\u003e\n\u003cli\u003eUpgrade certifi to 2025.7.14\u003c/li\u003e\n\u003cli\u003eUpgrade distlib to 0.4.0\u003c/li\u003e\n\u003cli\u003eUpgrade msgpack to 1.1.1\u003c/li\u003e\n\u003cli\u003eUpgrade platformdirs to 4.3.8\u003c/li\u003e\n\u003cli\u003eUpgrade pygments to 2.19.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.32.4\u003c/li\u003e\n\u003cli\u003eUpgrade resolvelib to 1.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/pip/commit/2e05cae3da2cfafa6dce58167a25b7dba4bc2a33\"\u003e\u003ccode\u003e2e05cae\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/f24906109c84ca51eef57a4f925298d38ff31df3\"\u003e\u003ccode\u003ef249061\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/78d15a5da09c6fbc5c2cd88fb5bd67bfd7fb0637\"\u003e\u003ccode\u003e78d15a5\u003c/code\u003e\u003c/a\u003e Copyedit news entries before 25.2 (again)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4fe68d78ae8b117ad413ec61c518dd600af08bf0\"\u003e\u003ccode\u003e4fe68d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13506\"\u003e#13506\u003c/a\u003e from ichard26/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/775a86f2bac8894771911ab068b18f09550cb6f0\"\u003e\u003ccode\u003e775a86f\u003c/code\u003e\u003c/a\u003e Fix broken unit tests \u0026amp; xfail weird failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2773b13baa59ec68b03df9f0f73e4e3c21fcd958\"\u003e\u003ccode\u003e2773b13\u003c/code\u003e\u003c/a\u003e Reformat and add --allow-unix-socket to pytest config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e384d1032c189312ac21f23844c9c6f1f4750eb1\"\u003e\u003ccode\u003ee384d10\u003c/code\u003e\u003c/a\u003e Declare Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4117dc7c6b606d825904ffbe35d51012923374f4\"\u003e\u003ccode\u003e4117dc7\u003c/code\u003e\u003c/a\u003e Always remove authority section when cleaning local URL path (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13510\"\u003e#13510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2e21934b5c35a0e6b41fd586399cd36ed304c03c\"\u003e\u003ccode\u003e2e21934\u003c/code\u003e\u003c/a\u003e Fix cleaning of local URLs with VCS schemes (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13509\"\u003e#13509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/853a593191d7205b837d32a72e0eb7e7b81e1821\"\u003e\u003ccode\u003e853a593\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003epath_to_url()\u003c/code\u003e tests (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13496\"\u003e#13496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/25.0.1...25.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/HISTORY.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.1.0\u003c/h1\u003e\n\u003cp\u003e2025-09-17\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2581_, [Windows]: publish ARM64 wheels.  (patch by Matthieu Darbois)\u003c/li\u003e\n\u003cli\u003e2571_, [FreeBSD]: Dropped support for FreeBSD 8 and earlier. FreeBSD 8 was\nmaintained from 2009 to 2013.\u003c/li\u003e\n\u003cli\u003e2575_: introduced \u003ccode\u003edprint\u003c/code\u003e CLI tool to format .yml and .md files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2473_, [macOS]: Fix build issue on macOS 11 and lower.\u003c/li\u003e\n\u003cli\u003e2494_, [Windows]: All APIs dealing with paths, such as\n\u003ccode\u003eProcess.memory_maps()\u003c/code\u003e\u003cem\u003e, \u003ccode\u003eProcess.exe()\u003c/code\u003e\u003c/em\u003e and \u003ccode\u003eProcess.open_files()\u003c/code\u003e_ does\nnot properly handle UNC paths. Paths such as \u003ccode\u003e\\\\??\\\\C:\\\\Windows\\\\Temp\u003c/code\u003e and\n\u003ccode\u003e'\\\\Device\\\\HarddiskVolume1\\\\Windows\\\\Temp'\u003c/code\u003e are now converted to\n\u003ccode\u003eC:\\\\Windows\\\\Temp\u003c/code\u003e.  (patch by Ben Peddell)\u003c/li\u003e\n\u003cli\u003e2506_, [Windows]: Windows service APIs had issues with unicode services using\nspecial characters in their name.\u003c/li\u003e\n\u003cli\u003e2514_, [Linux]: \u003ccode\u003eProcess.cwd()\u003c/code\u003e_ sometimes fail with \u003ccode\u003eFileNotFoundError\u003c/code\u003e due\nto a race condition.\u003c/li\u003e\n\u003cli\u003e2526_, [Linux]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e\u003cem\u003e, which is used to univocally\nidentify a process over time, is subject to system clock updates, and as such\ncan lead to \u003ccode\u003eProcess.is_running()\u003c/code\u003e\u003c/em\u003e returning a wrong result. A monotonic\ncreation time is now used instead.  (patch by Jonathan Kohler)\u003c/li\u003e\n\u003cli\u003e2528_, [Linux]: \u003ccode\u003eProcess.children()\u003c/code\u003e_ may raise \u003ccode\u003ePermissionError\u003c/code\u003e. It will\nnow raise \u003ccode\u003eAccessDenied\u003c/code\u003e_ instead.\u003c/li\u003e\n\u003cli\u003e2540_, [macOS]: \u003ccode\u003eboot_time()\u003c/code\u003e_ is off by 45 seconds (C precision issue).\u003c/li\u003e\n\u003cli\u003e2541_, 2570_, 2578_ [Linux], [macOS], [NetBSD]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e_ does\nnot reflect system clock updates.\u003c/li\u003e\n\u003cli\u003e2542_: if system clock is updated \u003ccode\u003eProcess.children()\u003c/code\u003e_ and\n\u003ccode\u003eProcess.parent()\u003c/code\u003e_ may not be able to return the right information.\u003c/li\u003e\n\u003cli\u003e2545_: [Illumos]: Fix handling of MIB2_UDP_ENTRY in \u003ccode\u003enet_connections()\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003e2552_, [Windows]: \u003ccode\u003eboot_time()\u003c/code\u003e_ didn't take into account the time spent\nduring suspend / hibernation.\u003c/li\u003e\n\u003cli\u003e2560_, [Linux]: \u003ccode\u003eProcess.memory_maps()\u003c/code\u003e_ may crash with \u003ccode\u003eIndexError\u003c/code\u003e on\nRISCV64 due to a malformed \u003ccode\u003e/proc/{PID}/smaps\u003c/code\u003e file.  (patch by Julien\nStephan)\u003c/li\u003e\n\u003cli\u003e2586_, [macOS], [CRITICAL]: fixed different places in C code which can\ntrigger a segfault.\u003c/li\u003e\n\u003cli\u003e2604_, [Linux]: \u003ccode\u003evirtual_memory()\u003c/code\u003e_ \u0026quot;used\u0026quot; memory does not match recent\nversions of \u003ccode\u003efree\u003c/code\u003e CLI utility.  (patch by Isaac K. Ko)\u003c/li\u003e\n\u003cli\u003e2605_, [Linux]: \u003ccode\u003epsutil.sensors_battery()\u003c/code\u003e reports a negative amount for\nseconds left.\u003c/li\u003e\n\u003cli\u003e2607_, [Windows]: \u003ccode\u003eWindowsService.description()\u003c/code\u003e method may fail with\n\u003ccode\u003eERROR_NOT_FOUND\u003c/code\u003e. Now it returns an empty string instead.\u003c/li\u003e\n\u003cli\u003e2610:, [macOS], [CRITICAL]: fix \u003ccode\u003ecpu_freq()\u003c/code\u003e_ segfault on ARM architectures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/0d18187e79b349e577fadabd3589f8fdbf99bf5a\"\u003e\u003ccode\u003e0d18187\u003c/code\u003e\u003c/a\u003e Revert HISTORY notes about \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e. We still do publish 3.6 and 3.7 wheels.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/229e2de232860fe22e2c2884c20b8979c643d5c6\"\u003e\u003ccode\u003e229e2de\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/fb75b28226ec8e6b9e5b9eefa05a62de579cc114\"\u003e\u003ccode\u003efb75b28\u003c/code\u003e\u003c/a\u003e Chore: skip CI tests except on Python 3.8 and 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/3a4c01638bc61c77f43a05aea5bc6e1ddc81c6c4\"\u003e\u003ccode\u003e3a4c016\u003c/code\u003e\u003c/a\u003e Stop publishing wheels for Python 3.6 and 3.7 (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/83e4f7fdd76051dd8e0eeed99e2bf5fc881a2960\"\u003e\u003ccode\u003e83e4f7f\u003c/code\u003e\u003c/a\u003e OSX: disable failing test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/df0d4e2637917377bd5971f1745e881b75f2c6e2\"\u003e\u003ccode\u003edf0d4e2\u003c/code\u003e\u003c/a\u003e Call GetExtended[Tcp|Udp]Table twice under free-threaded build (round 2) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2627\"\u003e#2627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/dcbfb81e863fa2b8688ccd8da27b09b539404688\"\u003e\u003ccode\u003edcbfb81\u003c/code\u003e\u003c/a\u003e [Windows] fix unicode issues around service APIs (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2626\"\u003e#2626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ef72dcd076f1cec94ba50ec30b5dbebb272845d0\"\u003e\u003ccode\u003eef72dcd\u003c/code\u003e\u003c/a\u003e revert \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2590\"\u003e#2590\u003c/a\u003e (Call GetExtended[Tcp|Udp]Table twice under free-threaded build)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8773698006d387db90b3982d78fd4ff6b2ebe71c\"\u003e\u003ccode\u003e8773698\u003c/code\u003e\u003c/a\u003e small refact around UTXENT_MUTEX_LOCK\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/13b711fc3ffa384d481e03881e46ae48009c4eeb\"\u003e\u003ccode\u003e13b711f\u003c/code\u003e\u003c/a\u003e Lock around uses of getutent/setutent/endutent (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2615\"\u003e#2615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/release-7.0.0...release-7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\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/theskumar/python-dotenv/commit/16e660d384b942b11879b44500afbbe021650448\"\u003e\u003ccode\u003e16e660d\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.0 → 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/667e82f18d6e5306894c8746c46b1da2d031bd23\"\u003e\u003ccode\u003e667e82f\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/9d85edb3b8652de4601f9ad8a7a49ad9909f898a\"\u003e\u003ccode\u003e9d85edb\u003c/code\u003e\u003c/a\u003e fix(cli): issue with execvpe on Windows (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8411987b9301f716245074872afa30646e9b9eb7\"\u003e\u003ccode\u003e8411987\u003c/code\u003e\u003c/a\u003e fix: ensure find_dotenv work reliably on python 3.13 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/01f899733de664cda0550207067eb36a1795062f\"\u003e\u003ccode\u003e01f8997\u003c/code\u003e\u003c/a\u003e docs update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.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 `ruamel-yaml` from 0.18.10 to 0.18.15\n\nUpdates `smart-open` from 7.1.0 to 7.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/releases\"\u003esmart-open's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003episkvorky/smart_open#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003episkvorky/smart_open#877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003episkvorky/smart_open#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003episkvorky/smart_open#875\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0.post1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003episkvorky/smart_open#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI badge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003episkvorky/smart_open#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003episkvorky/smart_open#871\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nThis version was yanked from PyPI because \u003ccode\u003epyproject.toml\u003c/code\u003e falsely claimed that python 3.7 was still supported.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003episkvorky/smart_open#857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003episkvorky/smart_open#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003episkvorky/smart_open#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003episkvorky/smart_open#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003episkvorky/smart_open#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003episkvorky/smart_open#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eModernize python packaging by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003episkvorky/smart_open#851\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.2.0\u003c/h2\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/blob/develop/CHANGELOG.md\"\u003esmart-open's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.3.1, 2025-09-08\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003e#877\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003e#878\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003e#875\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0.post1, 2025-07-03\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003e#868\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003e#867\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix CI badge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003e#869\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0, 2025-07-01\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003e#857\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003e#853\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003e#861\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003e#864\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003e#854\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernize python packaging (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003e#851\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/c17ae23c1cda0ba84d72ae12dc38442a57bd69e0\"\u003e\u003ccode\u003ec17ae23\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/b54438fb7d624cac8cde33feaea5ba22017d0d7e\"\u003e\u003ccode\u003eb54438f\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/676099ecc7889b3def7981ac56f888d8fcbb4a9b\"\u003e\u003ccode\u003e676099e\u003c/code\u003e\u003c/a\u003e Add .xz and increase performance of compression module (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/35843b97205a0fedec42bd3d3fa6d1afba6158e1\"\u003e\u003ccode\u003e35843b9\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5fefc681d16d0cbdb6a750d3209530a7ef549b98\"\u003e\u003ccode\u003e5fefc68\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/877\"\u003e#877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/414e2c45d0cbf49c38c677ce4b468e537386a4b0\"\u003e\u003ccode\u003e414e2c4\u003c/code\u003e\u003c/a\u003e Fix release.sh for the final merge back into develop (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/872\"\u003e#872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5313e526440b4ad53dd8850a3e53db9f35dc6fab\"\u003e\u003ccode\u003e5313e52\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/baed6541f6fdc1e48cf40cff5ca038bfa5db4543\"\u003e\u003ccode\u003ebaed654\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/aed8895e2b7463d624e36c98ef5585d243e7612d\"\u003e\u003ccode\u003eaed8895\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/69751d5405d7be4f57885ceba8811dcfa8ebea62\"\u003e\u003ccode\u003e69751d5\u003c/code\u003e\u003c/a\u003e Drop 3.7 support in pyproject.toml (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/871\"\u003e#871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.1.0...v7.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `structlog` from 25.2.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/releases\"\u003estructlog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.4.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eThe main feature is support for exception groups we \u003cdel\u003estole\u003c/del\u003e adapted from \u003ca href=\"https://rich.readthedocs.io/\"\u003eRich\u003c/a\u003e, however the main reason for this release at this point in time are backwards-incompatible changes in the upcoming Python 3.13.4. Update \u003cem\u003estructlog\u003c/em\u003e before updating Python, if you use \u003ccode\u003estructlog.stdlib.filter_by_level()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://www.klaviyo.com\"\u003eKlaviyo\u003c/a\u003e (@\u003ca href=\"https://github.com/klaviyo\"\u003eklaviyo\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), \u003ca href=\"https://blog.alternatebuild.dev\"\u003enate nowack\u003c/a\u003e (@\u003ca href=\"https://github.com/zzstoatzz\"\u003ezzstoatzz\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), Jesse Snyder (@\u003ca href=\"https://github.com/jessesnyder\"\u003ejessesnyder\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://www.miketheman.net\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https:/...\n\n_Description has been truncated_","html_url":"https://github.com/markhallen/dependabot-test-meltano/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/markhallen%2Fdependabot-test-meltano/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/packages"},{"uuid":"3417879030","node_id":"PR_kwDOOYeBPM6oogz9","number":35,"state":"open","title":"chore(deps): bump the runtime-dependencies group across 1 directory with 30 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-15T13:02:50.000Z","updated_at":"2025-09-22T12:30:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"runtime-dependencies","update_count":30,"packages":[{"name":"alembic","old_version":"1.15.2","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pip","old_version":"25.0.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.15"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.3.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"structlog","old_version":"25.2.0","new_version":"25.4.0","repository_url":"https://github.com/hynek/structlog"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.34.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"azure-storage-blob","old_version":"12.25.1","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-core","old_version":"1.33.0","new_version":"1.35.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.21.0","new_version":"1.25.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"pymssql","old_version":"2.3.4","new_version":"2.3.7","repository_url":"https://github.com/pymssql/pymssql"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.12","repository_url":"https://github.com/getmoto/moto"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-docker","old_version":"3.2.1","new_version":"3.2.3","repository_url":"https://github.com/avast/pytest-docker"},{"name":"pytest-structlog","old_version":"1.1","new_version":"1.2","repository_url":"https://github.com/wimglenn/pytest-structlog"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"setproctitle","old_version":"1.3.5","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.1","repository_url":"https://github.com/python/mypy"},{"name":"types-dateparser","old_version":"1.2.0.20250208","new_version":"1.2.2.20250809","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-jsonschema","old_version":"4.23.0.20241208","new_version":"4.25.1.20250822","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-dependencies group with 30 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.15.2` | `1.16.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [pip](https://github.com/pypa/pip) | `25.0.1` | `25.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.18.15` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [structlog](https://github.com/hynek/structlog) | `25.2.0` | `25.4.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.34.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.25.1` | `12.26.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.33.0` | `1.35.1` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.21.0` | `1.25.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.3.4` | `2.3.7` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.12` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-docker](https://github.com/avast/pytest-docker) | `3.2.1` | `3.2.3` |\n| [pytest-structlog](https://github.com/wimglenn/pytest-structlog) | `1.1` | `1.2` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.5` | `1.3.7` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.1` |\n| [types-dateparser](https://github.com/typeshed-internal/stub_uploader) | `1.2.0.20250208` | `1.2.2.20250809` |\n| [types-jsonschema](https://github.com/typeshed-internal/stub_uploader) | `4.23.0.20241208` | `4.25.1.20250822` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20250913` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n\n\nUpdates `alembic` from 1.15.2 to 1.16.5\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.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.4\u003c/h1\u003e\n\u003cp\u003eReleased: July 10, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue in new \u003ccode\u003epyproject.toml\u003c/code\u003e support where boolean values, such as\nthose used for the \u003ccode\u003erecursive_version_locations\u003c/code\u003e and \u003ccode\u003esourceless\u003c/code\u003e\nconfiguration parameters, would not be accepted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1694\"\u003e#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.3\u003c/h1\u003e\n\u003cp\u003eReleased: July 8, 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 new \u003ccode\u003epyproject_async\u003c/code\u003e template, combining the new \u003ccode\u003epyproject\u003c/code\u003e\ntemplate with the \u003ccode\u003easync\u003c/code\u003e template.  Pull request courtesy Alc-Alc.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1683\"\u003e#1683\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Add \u0026quot;module\u0026quot; post-write hook. This hook type is almost identical to the\nconsole_scripts hook, except it's running \u003ccode\u003epython -m black\u003c/code\u003e instead of\nusing black's \u003ccode\u003econsole_script\u003c/code\u003e. It is mainly useful for tools without\nconsole scripts (e.g. ruff), but has semantics closer to the\nconsole_scripts hook in that it finds the ruff module available to the\nrunning interpreter instead of finding an executable by path. Pull request\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\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 `anyio` from 4.9.0 to 4.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\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\n(\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\nkeyword argument\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\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\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint\n(special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and\nChristoffer Fjord)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/2eda004497cc7ab2b8c1ede4d7c4c276f0840fd9\"\u003e\u003ccode\u003e2eda004\u003c/code\u003e\u003c/a\u003e Added an example on how to use move_on_after() with shielding\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.25.1\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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra by \u003ca href=\"https://github.com/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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.24.1...v4.25.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.1...v4.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUnambiguously quote and escape properties in JSON path rendering by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop python\u0026lt;3.9 backports by \u003ca href=\"https://github.com/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\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/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\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.24.0...v4.24.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.0...v4.24.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculation of evaluated properties by \u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#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\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bkueng\"\u003e\u003ccode\u003e@​bkueng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1326\"\u003epython-jsonschema/jsonschema#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#1351\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.23.0...v4.24.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.24.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/331c38425519b69118d22ebe467ad230fb83a010\"\u003e\u003ccode\u003e331c384\u003c/code\u003e\u003c/a\u003e Add the fix to the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/c1ec0a645e913e83de95995f6efbbd358676abf6\"\u003e\u003ccode\u003ec1ec0a6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1398\"\u003e#1398\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/8e7d594faff13f8f663b306a0d86bea0ce5de6cb\"\u003e\u003ccode\u003e8e7d594\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1399\"\u003e#1399\u003c/a\u003e from python-jsonschema/dependabot/github_actions/act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/460f4fae42664773160f56ccc843a4fcea34f7cf\"\u003e\u003ccode\u003e460f4fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e from sirosen/improve-protocol-init-signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1e58409b71a9696b7bf9938ae8a3a48ef95ab29e\"\u003e\u003ccode\u003e1e58409\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/64bc2171624ef201bdbf35e47780348ce30935c5\"\u003e\u003ccode\u003e64bc217\u003c/code\u003e\u003c/a\u003e Add a typing test for the Validator protocol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6c25741bff889477680f9b0d1aa967ae35c38f43\"\u003e\u003ccode\u003e6c25741\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/bf603d59117f840916709fc87c6625df43d1fe72\"\u003e\u003ccode\u003ebf603d5\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6.4.3 to 6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a916d8f8253baa11bacc60f0868f0bab1e42d526\"\u003e\u003ccode\u003ea916d8f\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/de60f18bd97395a52a11b561eb62963e0ffe9e71\"\u003e\u003ccode\u003ede60f18\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1397\"\u003e#1397\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 25.0.1 to 25.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e25.2 (2025-07-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ccode\u003e[#13506](https://github.com/pypa/pip/issues/13506) \u0026lt;https://github.com/pypa/pip/issues/13506\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAutomatic download resumption and retrying is enabled by default. (\u003ccode\u003e[#13464](https://github.com/pypa/pip/issues/13464) \u0026lt;https://github.com/pypa/pip/issues/13464\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRequires-Python error message displays version clauses in numerical order. (\u003ccode\u003e[#13367](https://github.com/pypa/pip/issues/13367) \u0026lt;https://github.com/pypa/pip/issues/13367\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement getting the order to install a very large number of interdependent packages. (\u003ccode\u003e[#13424](https://github.com/pypa/pip/issues/13424) \u0026lt;https://github.com/pypa/pip/issues/13424\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow time taken instead of \u003ccode\u003eeta 0:00:00\u003c/code\u003e at download completion. (\u003ccode\u003e[#13483](https://github.com/pypa/pip/issues/13483) \u0026lt;https://github.com/pypa/pip/issues/13483\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eSpeed up small CLI tools by removing \u003ccode\u003eimport re\u003c/code\u003e from the console\nscript executable template. (\u003ccode\u003e[#13165](https://github.com/pypa/pip/issues/13165) \u0026lt;https://github.com/pypa/pip/issues/13165\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove warning when cloning from a Git reference that does not look like a commit hash. (\u003ccode\u003e[#12283](https://github.com/pypa/pip/issues/12283) \u0026lt;https://github.com/pypa/pip/issues/12283\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip config debug\u003c/code\u003e now correctly separates options as set by the different files\nat the same level. (\u003ccode\u003e[#12099](https://github.com/pypa/pip/issues/12099) \u0026lt;https://github.com/pypa/pip/issues/12099\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnsure truststore feature remains active even when a proxy is also in use. (\u003ccode\u003e[#13343](https://github.com/pypa/pip/issues/13343) \u0026lt;https://github.com/pypa/pip/issues/13343\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude sub-commands in tab completion. (\u003ccode\u003e[#13140](https://github.com/pypa/pip/issues/13140) \u0026lt;https://github.com/pypa/pip/issues/13140\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip list\u003c/code\u003e with the \u003ccode\u003ejson\u003c/code\u003e or \u003ccode\u003efreeze\u003c/code\u003e format enabled will no longer\ncrash when encountering a package with an invalid version. (\u003ccode\u003e[#13345](https://github.com/pypa/pip/issues/13345) \u0026lt;https://github.com/pypa/pip/issues/13345\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a hint if a system error is raised involving long filenames or path segments on Windows. (\u003ccode\u003e[#13346](https://github.com/pypa/pip/issues/13346) \u0026lt;https://github.com/pypa/pip/issues/13346\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResumed downloads are saved to the HTTP cache like any other normal download. (\u003ccode\u003e[#13441](https://github.com/pypa/pip/issues/13441) \u0026lt;https://github.com/pypa/pip/issues/13441\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfigured verbosity is consistently forwarded while calling Git during\nVCS operations. (\u003ccode\u003e[#13329](https://github.com/pypa/pip/issues/13329) \u0026lt;https://github.com/pypa/pip/issues/13329\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress the progress bar, when running with \u003ccode\u003e--log\u003c/code\u003e and \u003ccode\u003e--quiet\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eConsequently, a new \u003ccode\u003eauto\u003c/code\u003e mode for \u003ccode\u003e--progress-bar\u003c/code\u003e has been added.\n\u003ccode\u003eauto\u003c/code\u003e will enable progress bars unless suppressed by \u003ccode\u003e--quiet\u003c/code\u003e,\nwhile \u003ccode\u003eon\u003c/code\u003e will always enable progress bars. (\u003ccode\u003e[#10915](https://github.com/pypa/pip/issues/10915) \u0026lt;https://github.com/pypa/pip/issues/10915\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local URLs with non-\u003ccode\u003efile\u003c/code\u003e schemes. (\u003ccode\u003e[#13509](https://github.com/pypa/pip/issues/13509) \u0026lt;https://github.com/pypa/pip/issues/13509\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local file URLs on Windows in newer Python versions. (\u003ccode\u003e[#13510](https://github.com/pypa/pip/issues/13510) \u0026lt;https://github.com/pypa/pip/issues/13510\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix remaining test failures in Python 3.14 by adjusting \u003ccode\u003epath_to_url\u003c/code\u003e and similar functions. (\u003ccode\u003e[#13423](https://github.com/pypa/pip/issues/13423) \u0026lt;https://github.com/pypa/pip/issues/13423\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing \u003ccode\u003enetwork\u003c/code\u003e test markings, making the suite pass in offline\nenvironments again. (\u003ccode\u003e[#13378](https://github.com/pypa/pip/issues/13378) \u0026lt;https://github.com/pypa/pip/issues/13378\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CacheControl to 0.14.3\u003c/li\u003e\n\u003cli\u003eUpgrade certifi to 2025.7.14\u003c/li\u003e\n\u003cli\u003eUpgrade distlib to 0.4.0\u003c/li\u003e\n\u003cli\u003eUpgrade msgpack to 1.1.1\u003c/li\u003e\n\u003cli\u003eUpgrade platformdirs to 4.3.8\u003c/li\u003e\n\u003cli\u003eUpgrade pygments to 2.19.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.32.4\u003c/li\u003e\n\u003cli\u003eUpgrade resolvelib to 1.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/pip/commit/2e05cae3da2cfafa6dce58167a25b7dba4bc2a33\"\u003e\u003ccode\u003e2e05cae\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/f24906109c84ca51eef57a4f925298d38ff31df3\"\u003e\u003ccode\u003ef249061\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/78d15a5da09c6fbc5c2cd88fb5bd67bfd7fb0637\"\u003e\u003ccode\u003e78d15a5\u003c/code\u003e\u003c/a\u003e Copyedit news entries before 25.2 (again)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4fe68d78ae8b117ad413ec61c518dd600af08bf0\"\u003e\u003ccode\u003e4fe68d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13506\"\u003e#13506\u003c/a\u003e from ichard26/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/775a86f2bac8894771911ab068b18f09550cb6f0\"\u003e\u003ccode\u003e775a86f\u003c/code\u003e\u003c/a\u003e Fix broken unit tests \u0026amp; xfail weird failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2773b13baa59ec68b03df9f0f73e4e3c21fcd958\"\u003e\u003ccode\u003e2773b13\u003c/code\u003e\u003c/a\u003e Reformat and add --allow-unix-socket to pytest config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e384d1032c189312ac21f23844c9c6f1f4750eb1\"\u003e\u003ccode\u003ee384d10\u003c/code\u003e\u003c/a\u003e Declare Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4117dc7c6b606d825904ffbe35d51012923374f4\"\u003e\u003ccode\u003e4117dc7\u003c/code\u003e\u003c/a\u003e Always remove authority section when cleaning local URL path (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13510\"\u003e#13510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2e21934b5c35a0e6b41fd586399cd36ed304c03c\"\u003e\u003ccode\u003e2e21934\u003c/code\u003e\u003c/a\u003e Fix cleaning of local URLs with VCS schemes (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13509\"\u003e#13509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/853a593191d7205b837d32a72e0eb7e7b81e1821\"\u003e\u003ccode\u003e853a593\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003epath_to_url()\u003c/code\u003e tests (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13496\"\u003e#13496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/25.0.1...25.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\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/theskumar/python-dotenv/commit/16e660d384b942b11879b44500afbbe021650448\"\u003e\u003ccode\u003e16e660d\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.0 → 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/667e82f18d6e5306894c8746c46b1da2d031bd23\"\u003e\u003ccode\u003e667e82f\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/9d85edb3b8652de4601f9ad8a7a49ad9909f898a\"\u003e\u003ccode\u003e9d85edb\u003c/code\u003e\u003c/a\u003e fix(cli): issue with execvpe on Windows (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8411987b9301f716245074872afa30646e9b9eb7\"\u003e\u003ccode\u003e8411987\u003c/code\u003e\u003c/a\u003e fix: ensure find_dotenv work reliably on python 3.13 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/01f899733de664cda0550207067eb36a1795062f\"\u003e\u003ccode\u003e01f8997\u003c/code\u003e\u003c/a\u003e docs update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.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 `ruamel-yaml` from 0.18.10 to 0.18.15\n\nUpdates `smart-open` from 7.1.0 to 7.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/releases\"\u003esmart-open's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003episkvorky/smart_open#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003episkvorky/smart_open#877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003episkvorky/smart_open#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003episkvorky/smart_open#875\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0.post1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003episkvorky/smart_open#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI badge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003episkvorky/smart_open#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003episkvorky/smart_open#871\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nThis version was yanked from PyPI because \u003ccode\u003epyproject.toml\u003c/code\u003e falsely claimed that python 3.7 was still supported.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003episkvorky/smart_open#857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003episkvorky/smart_open#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003episkvorky/smart_open#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003episkvorky/smart_open#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003episkvorky/smart_open#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003episkvorky/smart_open#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eModernize python packaging by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003episkvorky/smart_open#851\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.2.0\u003c/h2\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/blob/develop/CHANGELOG.md\"\u003esmart-open's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.3.1, 2025-09-08\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003e#877\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003e#878\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003e#875\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0.post1, 2025-07-03\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003e#868\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003e#867\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix CI badge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003e#869\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0, 2025-07-01\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003e#857\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003e#853\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003e#861\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003e#864\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003e#854\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernize python packaging (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003e#851\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/c17ae23c1cda0ba84d72ae12dc38442a57bd69e0\"\u003e\u003ccode\u003ec17ae23\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/b54438fb7d624cac8cde33feaea5ba22017d0d7e\"\u003e\u003ccode\u003eb54438f\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/676099ecc7889b3def7981ac56f888d8fcbb4a9b\"\u003e\u003ccode\u003e676099e\u003c/code\u003e\u003c/a\u003e Add .xz and increase performance of compression module (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/35843b97205a0fedec42bd3d3fa6d1afba6158e1\"\u003e\u003ccode\u003e35843b9\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5fefc681d16d0cbdb6a750d3209530a7ef549b98\"\u003e\u003ccode\u003e5fefc68\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/877\"\u003e#877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/414e2c45d0cbf49c38c677ce4b468e537386a4b0\"\u003e\u003ccode\u003e414e2c4\u003c/code\u003e\u003c/a\u003e Fix release.sh for the final merge back into develop (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/872\"\u003e#872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5313e526440b4ad53dd8850a3e53db9f35dc6fab\"\u003e\u003ccode\u003e5313e52\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/baed6541f6fdc1e48cf40cff5ca038bfa5db4543\"\u003e\u003ccode\u003ebaed654\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/aed8895e2b7463d624e36c98ef5585d243e7612d\"\u003e\u003ccode\u003eaed8895\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/69751d5405d7be4f57885ceba8811dcfa8ebea62\"\u003e\u003ccode\u003e69751d5\u003c/code\u003e\u003c/a\u003e Drop 3.7 support in pyproject.toml (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/871\"\u003e#871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.1.0...v7.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `structlog` from 25.2.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/releases\"\u003estructlog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.4.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eThe main feature is support for exception groups we \u003cdel\u003estole\u003c/del\u003e adapted from \u003ca href=\"https://rich.readthedocs.io/\"\u003eRich\u003c/a\u003e, however the main reason for this release at this point in time are backwards-incompatible changes in the upcoming Python 3.13.4. Update \u003cem\u003estructlog\u003c/em\u003e before updating Python, if you use \u003ccode\u003estructlog.stdlib.filter_by_level()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://www.klaviyo.com\"\u003eKlaviyo\u003c/a\u003e (@\u003ca href=\"https://github.com/klaviyo\"\u003eklaviyo\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), \u003ca href=\"https://blog.alternatebuild.dev\"\u003enate nowack\u003c/a\u003e (@\u003ca href=\"https://github.com/zzstoatzz\"\u003ezzstoatzz\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), Jesse Snyder (@\u003ca href=\"https://github.com/jessesnyder\"\u003ejessesnyder\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://www.miketheman.net\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://mpr.crossjam.net/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Moving Content AG (@\u003ca href=\"https://github.com/moving-content\"\u003emoving-content\u003c/a\u003e), \u003ca href=\"https://proteinqure.com/\"\u003eProteinQure\u003c/a\u003e (@\u003ca href=\"https://github.com/ProteinQure\"\u003eProteinQure\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), and \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eNot to forget 14 more amazing humans who chose to be generous but anonymous!\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport for Python 3.14 and Python 3.13.4.\u003c/p\u003e\n\u003cp\u003ePython 3.14 has an backwards-incompatible change to \u003ccode\u003elogging.Logger.isEnabledFor()\u003c/code\u003e (it now always returns False if a log entry is in flight) that has been backported to 3.13.4 (expected on 2025-06-03). It mainly affects \u003ccode\u003estructlog.stdlib.filter_by_level()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/723\"\u003e#723\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.tracebacks\u003c/code\u003e now handles \u003ca href=\"https://docs.python.org/3/library/exceptions.html#exception-groups\"\u003eexception groups\u003c/a\u003e. \u003ccode\u003estructlog.tracebacks.Stack\u003c/code\u003e has two new fields, \u003ccode\u003eis_group: bool\u003c/code\u003e and \u003ccode\u003eexceptions: list[Trace]\u003c/code\u003e. This works similarly to what Rich v14.0.0 does. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/720\"\u003e#720\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.processors.ExceptionPrettyPrinter\u003c/code\u003e now respects the \u003cem\u003eexception_formatter\u003c/em\u003e arguments instead of always using the default formatter. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/724\"\u003e#724\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eThis release contains contributions from \u003ca href=\"https://github.com/anujdas\"\u003e\u003ccode\u003e@​anujdas\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/hynek\"\u003e\u003ccode\u003e@​hynek\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/sscherfke\"\u003e\u003ccode\u003e@​sscherfke\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eArtifact Attestations\u003c/h2\u003e\n\u003cp\u003eYou can verify this release's \u003ca href=\"https://docs.github.com/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\"\u003eartifact attestions\u003c/a\u003e using \u003ca href=\"https://cli.github.com\"\u003eGitHub's CLI tool\u003c/a\u003e by downloading the sdist and wheel from \u003ca href=\"https://pypi.org/project/structlog\"\u003ePyPI\u003c/a\u003e and running:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ gh attestation verify --owner hynek structlog-25.4.0.tar.gz\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/blob/main/CHANGELOG.md\"\u003estructlog's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/structlog/compare/25.3.0...25.4.0\"\u003e25.4.0\u003c/a\u003e - 2025-06-02\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport for Python 3.14 and Python 3.13.4.\u003c/p\u003e\n\u003cp\u003ePython 3.14 has an backwards-incompatible change to \u003ccode\u003elogging.Logger.isEnabledFor()\u003c/code\u003e (it now always returns False if a log entry is in flight) that has been backported to 3.13.4 (expected on 2025-06-03).\nIt mainly affects \u003ccode\u003estructlog.stdlib.filter_by_level()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/723\"\u003e#723\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.tracebacks\u003c/code\u003e now handles \u003ca href=\"https://docs.python.org/3/library/exceptions.html#exception-groups\"\u003eexception groups\u003c/a\u003e.\n\u003ccode\u003estructlog.tracebacks.Stack\u003c/code\u003e has two new fields, \u003ccode\u003eis_group: bool\u003c/code\u003e and \u003ccode\u003eexceptions: list[Trace]\u003c/code\u003e.\nThis works similarly to what Rich v14.0.0 does.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/720\"\u003e#720\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.processors.ExceptionPrettyPrinter\u003c/code\u003e now respects the \u003cem\u003eexception_formatter\u003c/em\u003e arguments instead of always using the default formatter.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/724\"\u003e#724\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/structlog/compare/25.2.0...25.3.0\"\u003e25.3.0\u003c/a\u003e - 2025-04-25\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.processors.TimeStamper\u003c/code\u003e now again uses timestamps using UTC for custom format strings when \u003ccode\u003eutc=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/713\"\u003e#713\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/hynek/structlog/commit/d38385cda711f62ad56018abfd72d4384f94e3ce\"\u003e\u003ccode\u003ed38385c\u003c/code\u003e\u003c/a\u003e Prepare 25.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/57e165bfacb79eb5942389c20eb9d883d88bfcb6\"\u003e\u003ccode\u003e57e165b\u003c/code\u003e\u003c/a\u003e Make Mypy 1.16 pass\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/e941e337d312eaf256595d9d09da4542c5e94d0b\"\u003e\u003ccode\u003ee941e33\u003c/code\u003e\u003c/a\u003e ci: work around weird new failure in Mypy 1.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/d9480273261e4d55d05465c434c41c7e25af4dde\"\u003e\u003ccode\u003ed948027\u003c/code\u003e\u003c/a\u003e Update Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/ea14fda0c7067237292f4f214890054c77036e0e\"\u003e\u003ccode\u003eea14fda\u003c/code\u003e\u003c/a\u003e Oxford...\n\n_Description has been truncated_","html_url":"https://github.com/markhallen/dependabot-test-meltano/pull/35","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/markhallen%2Fdependabot-test-meltano/issues/35","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/35/packages"},{"uuid":"2823883941","node_id":"PR_kwDOPu319M6oUQyl","number":3,"state":"open","title":"build(deps): bump time-machine from 2.16.0 to 2.19.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-12T19:53:31.000Z","updated_at":"2025-09-12T19:53:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.16.0 to 2.19.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=2.16.0\u0026new-version=2.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/wmhcarter2024/freelawproject-courtlistener/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wmhcarter2024%2Ffreelawproject-courtlistener/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"},{"uuid":"2802431823","node_id":"PR_kwDOPGO3Ws6nCbdP","number":56,"state":"closed","title":"Bump the lint_and_test group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-09-08T12:26:51.000Z","author_association":"NONE","state_reason":null,"created_at":"2025-09-05T12:21:19.000Z","updated_at":"2025-09-08T12:26:51.000Z","time_to_close":259532,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"lint_and_test","update_count":3,"packages":[{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"ruff","old_version":"0.12.1","new_version":"0.12.12","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the lint_and_test group with 3 updates in the / directory: [pytest](https://github.com/pytest-dev/pytest), [time-machine](https://github.com/adamchainz/time-machine) and [ruff](https://github.com/astral-sh/ruff).\n\nUpdates `pytest` from 8.4.1 to 8.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003ch1\u003epytest 8.4.2 (2025-09-03)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13478\"\u003e#13478\u003c/a\u003e: Fixed a crash when using \u003ccode\u003econsole_output_style\u003c/code\u003e{.interpreted-text role=\u0026quot;confval\u0026quot;} with \u003ccode\u003etimes\u003c/code\u003e and a module is skipped.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13530\"\u003e#13530\u003c/a\u003e: Fixed a crash when using \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} and \u003ccode\u003edecimal.Decimal\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} instances with the \u003ccode\u003edecimal.FloatOperation\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} trap set.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13549\"\u003e#13549\u003c/a\u003e: No longer evaluate type annotations in Python \u003ccode\u003e3.14\u003c/code\u003e when inspecting function signatures.\u003c/p\u003e\n\u003cp\u003eThis prevents crashes during module collection when modules do not explicitly use \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e and import types for annotations within a \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13559\"\u003e#13559\u003c/a\u003e: Added missing [int]{.title-ref} and [float]{.title-ref} variants to the [Literal]{.title-ref} type annotation of the [type]{.title-ref} parameter in \u003ccode\u003epytest.Parser.addini\u003c/code\u003e{.interpreted-text role=\u0026quot;meth\u0026quot;}.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13563\"\u003e#13563\u003c/a\u003e: \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} now only imports \u003ccode\u003enumpy\u003c/code\u003e if NumPy is already in \u003ccode\u003esys.modules\u003c/code\u003e. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13577\"\u003e#13577\u003c/a\u003e: Clarify that \u003ccode\u003epytest_generate_tests\u003c/code\u003e is discovered in test modules/classes; other hooks must be in \u003ccode\u003econftest.py\u003c/code\u003e or plugins.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13480\"\u003e#13480\u003c/a\u003e: Self-testing: fixed a few test failures when run with \u003ccode\u003e-Wdefault\u003c/code\u003e or a similar override.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13547\"\u003e#13547\u003c/a\u003e: Self-testing: corrected expected message for \u003ccode\u003etest_doctest_unexpected_exception\u003c/code\u003e in Python \u003ccode\u003e3.14\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13684\"\u003e#13684\u003c/a\u003e: Make pytest's own testsuite insensitive to the presence of the \u003ccode\u003eCI\u003c/code\u003e environment variable -- by \u003ccode\u003eogrisel\u003c/code\u003e{.interpreted-text role=\u0026quot;user\u0026quot;}.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bfae4224fd554d3d7f2c277a4cc092b6ec6af3ae\"\u003e\u003ccode\u003ebfae422\u003c/code\u003e\u003c/a\u003e Prepare release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/89905381a163be30ae87d62e5f750e902d750c5f\"\u003e\u003ccode\u003e8990538\u003c/code\u003e\u003c/a\u003e Fix passenv CI in tox ini and make tests insensitive to the presence of the C...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ca676bfe005aebcb12f4146d1b0f1d2772e2cd5d\"\u003e\u003ccode\u003eca676bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13687\"\u003e#13687\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/e63f6e51c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/975a60a63ce385a44655596e254c1899feaa53e4\"\u003e\u003ccode\u003e975a60a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13686\"\u003e#13686\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/12bde8af6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7723ce84b87ab08f86ddafcb342acc28ba5ec99d\"\u003e\u003ccode\u003e7723ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13683\"\u003e#13683\u003c/a\u003e from even-even/fix_Exeption_to_Exception_in_errorMe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7f05680d1301e0969b30bcb3c4b27433c9ee2b7\"\u003e\u003ccode\u003eb7f0568\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13685\"\u003e#13685\u003c/a\u003e from CoretexShadow/fix/docs-pytest-generate-tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/2c94c4a6948ba53440818389298157fa5d5f94cd\"\u003e\u003ccode\u003e2c94c4a\u003c/code\u003e\u003c/a\u003e add missing colon (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13640\"\u003e#13640\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13641\"\u003e#13641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c3d7684bc01c8c48d05145a30c5211ca8656c68c\"\u003e\u003ccode\u003ec3d7684\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13606\"\u003e#13606\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/5f9938563...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/dc6e3be2ddc75a149b6d102d9b7c82ee47a00cfa\"\u003e\u003ccode\u003edc6e3be\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13605\"\u003e#13605\u003c/a\u003e from The-Compiler/training-update-2025-07\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f87289c36c8dbe7740e3020f5546b6f8b0861ff0\"\u003e\u003ccode\u003ef87289c\u003c/code\u003e\u003c/a\u003e Fix crash with \u003ccode\u003etimes\u003c/code\u003e output style and skipped module (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13573\"\u003e#13573\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13579\"\u003e#13579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.1...8.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `time-machine` from 2.16.0 to 2.19.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.12.1 to 0.12.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow fixes by default (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19919\"\u003e#19919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Convert \u003ccode\u003eDatasetOrTimeSchedule(datasets=...)\u003c/code\u003e to \u003ccode\u003eAssetOrTimeSchedule(assets=...)\u003c/code\u003e (\u003ccode\u003eAIR311\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20202\"\u003e#20202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Improve the \u003ccode\u003eAIR002\u003c/code\u003e error message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20173\"\u003e#20173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Move \u003ccode\u003eairflow.operators.postgres_operator.Mapping\u003c/code\u003e from \u003ccode\u003eAIR302\u003c/code\u003e to \u003ccode\u003eAIR301\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20172\"\u003e#20172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Implement \u003ccode\u003eblocking-input\u003c/code\u003e rule (\u003ccode\u003eASYNC250\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20122\"\u003e#20122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Make \u003ccode\u003ePTH119\u003c/code\u003e and \u003ccode\u003ePTH120\u003c/code\u003e fixes unsafe because they can change behavior (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20118\"\u003e#20118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Add U+061C to \u003ccode\u003ePLE2502\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20106\"\u003e#20106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix false negative for empty f-strings in \u003ccode\u003edeque\u003c/code\u003e calls (\u003ccode\u003eRUF037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20109\"\u003e#20109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLess confidently mark f-strings as empty when inferring truthiness (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20152\"\u003e#20152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003efastapi\u003c/code\u003e] Fix false positive for paths with spaces around parameters (\u003ccode\u003eFAST003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20077\"\u003e#20077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e when lambda contains \u003ccode\u003eyield\u003c/code\u003e/\u003ccode\u003eyield from\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20201\"\u003e#20201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Handle tuples in dictionary comprehensions (\u003ccode\u003ePERF403\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19934\"\u003e#19934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Preserve return type annotation for \u003ccode\u003eParamSpec\u003c/code\u003e (\u003ccode\u003eE731\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20108\"\u003e#20108\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fix safety sections to docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/17490\"\u003e#17490\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/17499\"\u003e#17499\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/11happy\"\u003e\u003ccode\u003e@​11happy\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BurntSushi\"\u003e\u003ccode\u003e@​BurntSushi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Gankra\"\u003e\u003ccode\u003e@​Gankra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kalmaegi\"\u003e\u003ccode\u003e@​Kalmaegi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Lee-W\"\u003e\u003ccode\u003e@​Lee-W\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MatthewMckee4\"\u003e\u003ccode\u003e@​MatthewMckee4\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrettyWood\"\u003e\u003ccode\u003e@​PrettyWood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Renkai\"\u003e\u003ccode\u003e@​Renkai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShaharNaveh\"\u003e\u003ccode\u003e@​ShaharNaveh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dcreager\"\u003e\u003ccode\u003e@​dcreager\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dhruvmanila\"\u003e\u003ccode\u003e@​dhruvmanila\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c6516e9b60e7b8d3d60b1e3a0fb0db04b533de54\"\u003e\u003ccode\u003ec6516e9\u003c/code\u003e\u003c/a\u003e Bump 0.12.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20242\"\u003e#20242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1aaa0847abdebfe910513b1c883977a996da2db5\"\u003e\u003ccode\u003e1aaa084\u003c/code\u003e\u003c/a\u003e [ty] More tests for TypedDict (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20205\"\u003e#20205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b49aa3507472a92b492de0fc924eff2c4bad4248\"\u003e\u003ccode\u003eb49aa35\u003c/code\u003e\u003c/a\u003e Split LICENSE addendum by derivation type (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20222\"\u003e#20222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1e34f3f20a71a4375ba64faad43f21171e3829cd\"\u003e\u003ccode\u003e1e34f3f\u003c/code\u003e\u003c/a\u003e [ty] Fix small test typo (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20220\"\u003e#20220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/77b2cee2233620636e03f547337ff805415c7465\"\u003e\u003ccode\u003e77b2cee\u003c/code\u003e\u003c/a\u003e [ty] Add functions for revealing assignability/subtyping constraints (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20217\"\u003e#20217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/200349c6e84d04a8e0d986488f7991b17b747964\"\u003e\u003ccode\u003e200349c\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e when lambda contains \u003ccode\u003eyield\u003c/code\u003e/`yield fro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0d4f7dde9967704767d8515aadcf8c94353dde35\"\u003e\u003ccode\u003e0d4f7dd\u003c/code\u003e\u003c/a\u003e [ty] Treat \u003ccode\u003e__new__\u003c/code\u003e as a static method (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20212\"\u003e#20212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/cb1ba0d4c26dd649bfab9de7ae0e84c0e28e910c\"\u003e\u003ccode\u003ecb1ba0d\u003c/code\u003e\u003c/a\u003e Expose \u003ccode\u003eIndentation\u003c/code\u003e in \u003ccode\u003eruff_python_codegen\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20216\"\u003e#20216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/cda376afe079b54b6779704bdd740c9e81423e39\"\u003e\u003ccode\u003ecda376a\u003c/code\u003e\u003c/a\u003e [ty]eliminate definitely-impossible types from union in equality narrowing (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b14fc961413c5ca032fdfdff29fcc6be4f9c8a75\"\u003e\u003ccode\u003eb14fc96\u003c/code\u003e\u003c/a\u003e Update Rust crate tracing-subscriber to v0.3.20 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20162\"\u003e#20162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.1...0.12.12\"\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 \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/dsp-testing/dtos-manage-breast-screening/pull/56","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsp-testing%2Fdtos-manage-breast-screening/issues/56","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/56/packages"}],"issue_packages":[{"old_version":"^2.16.0","new_version":"^3.2.0","update_type":null,"path":null,"pr_created_at":"2026-04-03T05:53:21.000Z","version_change":"^2.16.0 → ^3.2.0","issue":{"uuid":"4198549092","node_id":"PR_kwDOChapRM7Pu24a","number":868,"state":"open","title":"build(deps-dev): update time-machine requirement from ^2.16.0 to ^3.2.0","user":"dependabot[bot]","labels":["type: dependencies","status: approved"],"assignees":["thecode","YogevBokobza","TomerFi"],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-03T05:53:21.000Z","updated_at":"2026-04-03T05:55:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): update","packages":[{"name":"time-machine","old_version":"^2.16.0","new_version":"^3.2.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [time-machine](https://github.com/adamchainz/time-machine) 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/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.0 (2025-11-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove mocking of \u003ccode\u003etime.monotonic()\u003c/code\u003e and \u003ccode\u003etime.monotonic_ns()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis mocking caused too many issues, such as causing freezes in asyncio event loops (\u003ccode\u003eIssue [#387](https://github.com/adamchainz/time-machine/issues/387) \u0026lt;https://github.com/adamchainz/time-machine/issues/387\u0026gt;\u003c/code\u003e\u003cstrong\u003e), preventing pytest-durations from timing tests correctly (\u003ccode\u003eIssue [#505](https://github.com/adamchainz/time-machine/issues/505) \u0026lt;https://github.com/adamchainz/time-machine/issues/505\u0026gt;\u003c/code\u003e\u003c/strong\u003e), and triggering timeouts in psycopg (\u003ccode\u003eIssue [#509](https://github.com/adamchainz/time-machine/issues/509) \u0026lt;https://github.com/adamchainz/time-machine/issues/509\u0026gt;\u003c/code\u003e__).\nThe root cause here is that mocking the monotonic clock breaks its contract, allowing it to move backwards when it’s meant to only move forwards.\u003c/p\u003e\n\u003cp\u003eAs an alternative, use |unittest.mock|__ to mock the monotonic function for the specific tested modules that need it.\nThat means that your code should import \u003ccode\u003emonotonic()\u003c/code\u003e or \u003ccode\u003emonotonic_ns()\u003c/code\u003e directly, so that your tests can mock it in those places only.\nFor example, if your system under test looks like:\u003c/p\u003e\n\u003cp\u003e.. |unittest.mock| replace:: \u003ccode\u003eunittest.mock\u003c/code\u003e\n__ \u003ca href=\"https://docs.python.org/3/library/unittest.mock.html\"\u003ehttps://docs.python.org/3/library/unittest.mock.html\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/TomerFi/aioswitcher/pull/868","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomerFi%2Faioswitcher/issues/868","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/868/packages"}},{"old_version":"2.19.0","new_version":"3.2.0","update_type":"major","path":null,"pr_created_at":"2026-03-27T19:12:54.000Z","version_change":"2.19.0 → 3.2.0","issue":{"uuid":"4155294198","node_id":"PR_kwDOMl9L2s7OI2wi","number":241,"state":"open","title":"build(deps-dev): bump time-machine from 2.19.0 to 3.2.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-27T19:12:54.000Z","updated_at":"2026-03-27T19:16:36.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"time-machine","old_version":"2.19.0","new_version":"3.2.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.19.0 to 3.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.0 (2025-11-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove mocking of \u003ccode\u003etime.monotonic()\u003c/code\u003e and \u003ccode\u003etime.monotonic_ns()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis mocking caused too many issues, such as causing freezes in asyncio event loops (\u003ccode\u003eIssue [#387](https://github.com/adamchainz/time-machine/issues/387) \u0026lt;https://github.com/adamchainz/time-machine/issues/387\u0026gt;\u003c/code\u003e\u003cstrong\u003e), preventing pytest-durations from timing tests correctly (\u003ccode\u003eIssue [#505](https://github.com/adamchainz/time-machine/issues/505) \u0026lt;https://github.com/adamchainz/time-machine/issues/505\u0026gt;\u003c/code\u003e\u003c/strong\u003e), and triggering timeouts in psycopg (\u003ccode\u003eIssue [#509](https://github.com/adamchainz/time-machine/issues/509) \u0026lt;https://github.com/adamchainz/time-machine/issues/509\u0026gt;\u003c/code\u003e__).\nThe root cause here is that mocking the monotonic clock breaks its contract, allowing it to move backwards when it’s meant to only move forwards.\u003c/p\u003e\n\u003cp\u003eAs an alternative, use |unittest.mock|__ to mock the monotonic function for the specific tested modules that need it.\nThat means that your code should import \u003ccode\u003emonotonic()\u003c/code\u003e or \u003ccode\u003emonotonic_ns()\u003c/code\u003e directly, so that your tests can mock it in those places only.\nFor example, if your system under test looks like:\u003c/p\u003e\n\u003cp\u003e.. |unittest.mock| replace:: \u003ccode\u003eunittest.mock\u003c/code\u003e\n__ \u003ca href=\"https://docs.python.org/3/library/unittest.mock.html\"\u003ehttps://docs.python.org/3/library/unittest.mock.html\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.19.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=uv\u0026previous-version=2.19.0\u0026new-version=3.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/plugboard-dev/plugboard/pull/241","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/plugboard-dev%2Fplugboard/issues/241","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/241/packages"}},{"old_version":"2.19.0","new_version":"3.2.0","update_type":"major","path":null,"pr_created_at":"2026-02-01T16:56:30.000Z","version_change":"2.19.0 → 3.2.0","issue":{"uuid":"3882447027","node_id":"PR_kwDODl6u4c7AvAU6","number":1376,"state":"closed","title":"Bump the dev-dependencies group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-13T09:49:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T16:56:30.000Z","updated_at":"2026-02-13T09:49:03.000Z","time_to_close":1011151,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev-dependencies","update_count":8,"packages":[{"name":"coverage","old_version":"7.11.0","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"mypy","old_version":"1.18.2","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.14.3","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"},{"name":"time-machine","old_version":"2.19.0","new_version":"3.2.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"types-pytz","old_version":"2025.2.0.20250809","new_version":"2025.2.0.20251108","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 8 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.11.0` | `7.13.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `1.19.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.3` | `0.14.14` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.4.20250913` | `2.32.4.20260107` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.19.0` | `3.2.0` |\n| [types-pytz](https://github.com/typeshed-internal/stub_uploader) | `2025.2.0.20250809` | `2025.2.0.20251108` |\n\n\nUpdates `coverage` from 7.11.0 to 7.13.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.2 — 2026-01-25\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when Python is installed via symlinks, for example with Homebrew, the\nstandard library files could be incorrectly included in coverage reports.\nThis is now fixed, closing \u003ccode\u003eissue 2115\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: if a data file is created with no read permissions, the combine step\nwould fail completely. Now a warning is issued and the file is skipped.\nCloses \u003ccode\u003eissue 2117\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2115: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003ecoveragepy/coveragepy#2115\u003c/a\u003e\n.. _issue 2117: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2117\"\u003ecoveragepy/coveragepy#2117\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.1 — 2025-12-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: the JSON report now includes a \u003ccode\u003e\u0026quot;start_line\u0026quot;\u003c/code\u003e key for function and\nclass regions, indicating the first line of the region in the source. Closes\n\u003ccode\u003eissue 2110\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: The \u003ccode\u003edebug data\u003c/code\u003e command now takes file names as arguments on the\ncommand line, so you can inspect specific data files without needing to set\nthe \u003ccode\u003eCOVERAGE_FILE\u003c/code\u003e environment variable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the JSON report used to report module docstrings as executed lines,\nwhich no other report did, as described in \u003ccode\u003eissue 2105\u003c/code\u003e_. This is now fixed,\nthanks to Jianrong Zhao.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: coverage.py uses a more disciplined approach to detecting where\nthird-party code is installed, and avoids measuring it. This shouldn't change\nany behavior. If you find that it does, please get in touch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: data files that will be combined now record their hash as part\nof the file name. This lets us skip duplicate data more quickly, speeding the\ncombining step.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDocs: added a section explaining more about what is considered a missing\nbranch and how it is reported: :ref:\u003ccode\u003ebranch_explain\u003c/code\u003e, as requested in \u003ccode\u003eissue 1597\u003c/code\u003e\u003cem\u003e. Thanks to \u003ccode\u003eAyisha Mohammed \u0026lt;pull 2092_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTests: the test suite misunderstood what core was being tested if\n\u003ccode\u003eCOVERAGE_CORE\u003c/code\u003e wasn't set on 3.14+. This is now fixed, closing \u003ccode\u003eissue 2109\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1597: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1597\"\u003ecoveragepy/coveragepy#1597\u003c/a\u003e\n.. _pull 2092: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2092\"\u003ecoveragepy/coveragepy#2092\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/513e97162536cb94aeb94ed3cbe487ca64d13e07\"\u003e\u003ccode\u003e513e971\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27a8230cf0ef73abca824d2a8622235d9ad8ab96\"\u003e\u003ccode\u003e27a8230\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27d8daac216ffef80276515b22cf679f9fabc422\"\u003e\u003ccode\u003e27d8daa\u003c/code\u003e\u003c/a\u003e refactor: plural does more\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2f248cf095fc49d3599c39befdea6a5552ccd23\"\u003e\u003ccode\u003ea2f248c\u003c/code\u003e\u003c/a\u003e fix: stdlib might be through a symlink. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003e#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc52a22953759f71c291d31e7d17faf9903c0667\"\u003e\u003ccode\u003ebc52a22\u003c/code\u003e\u003c/a\u003e debug: re-organize Matchers to show more of what they do\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f338d816ba7fcd23934a9397d15450593f0f20d9\"\u003e\u003ccode\u003ef338d81\u003c/code\u003e\u003c/a\u003e debug: build is a tuple, don't show it on two lines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92020e469ab6c80cbe24786d0250a571d5f569cf\"\u003e\u003ccode\u003e92020e4\u003c/code\u003e\u003c/a\u003e refactor(test): convert to parametrized\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6387d0a60d80cb96231ad32fe81be47cddfe1c78\"\u003e\u003ccode\u003e6387d0a\u003c/code\u003e\u003c/a\u003e test: let (most) tests run with no network\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1d31e33cfe0ccef7d87c1f0c6219f55a3d9b5eee\"\u003e\u003ccode\u003e1d31e33\u003c/code\u003e\u003c/a\u003e build: workflows sometimes need more than 10 min\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/62949782b7810d8ffc228ba0e00f81c2ab81cda7\"\u003e\u003ccode\u003e6294978\u003c/code\u003e\u003c/a\u003e refactor: an error message is now uniform across versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.11.0...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.18.2 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.3 to 0.14.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8b2e7b36f246b990fe473a84eef25ff429e59ecf\"\u003e\u003ccode\u003e8b2e7b3\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22813\"\u003e#22813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4c7d1f50fd8d1baf06a3c8885ecd0ded0113d383\"\u003e\u003ccode\u003e4c7d1f5\u003c/code\u003e\u003c/a\u003e [ty] Infer \u003ccode\u003eTypedDict\u003c/code\u003e types with \u0026gt;=1 required key as being always truthy (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b7de4341535ff2b299695335e0a7b9ebaf297348\"\u003e\u003ccode\u003eb7de434\u003c/code\u003e\u003c/a\u003e add CCfW hooks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22803\"\u003e#22803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b912dfc8788f8f8c351767899df6b72ce3366352\"\u003e\u003ccode\u003eb912dfc\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1ff062d1cccb8025de184a55c6dfe469a4293249\"\u003e\u003ccode\u003e1ff062d\u003c/code\u003e\u003c/a\u003e [ty] Improve completion rankings for raise-from/except contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22775\"\u003e#22775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7e408a51d24db2bca248bb90f2f7938f83efd22b\"\u003e\u003ccode\u003e7e408a5\u003c/code\u003e\u003c/a\u003e Update dependency wrangler to v4.59.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22793\"\u003e#22793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ceb876b82300bd237d11e3eb77c46fcf3d3afe85\"\u003e\u003ccode\u003eceb876b\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e,...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c5b4ee68c90faf0e609fa6553a171a7ba60ebdcb\"\u003e\u003ccode\u003ec5b4ee6\u003c/code\u003e\u003c/a\u003e [ty] Support solving generics involving PEP 695 type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22678\"\u003e#22678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b9a61293153f43df9963c727539309b76ac4756d\"\u003e\u003ccode\u003eb9a6129\u003c/code\u003e\u003c/a\u003e [ty] Improve support for kwarg splats in dictionary literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22781\"\u003e#22781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f516d47ceb7f6a0c3a95eaaa2c7451a32b5d7120\"\u003e\u003ccode\u003ef516d47\u003c/code\u003e\u003c/a\u003e Update contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.14.3...0.14.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.32.4.20250913 to 2.32.4.20260107\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `setuptools` from 80.9.0 to 80.10.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5115\"\u003e#5115\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5128\"\u003e#5128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.1\u003c/h1\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5152\"\u003e#5152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove post-release tags on setuptools' own build. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4530\"\u003e#4530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefreshed vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5033\"\u003e#5033\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/pypa/setuptools/commit/5cf2d085186f2c8053940076db99045b826ec22a\"\u003e\u003ccode\u003e5cf2d08\u003c/code\u003e\u003c/a\u003e Bump version: 80.10.1 → 80.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/852cd5e9fa507c91f5f6683425f157649715d268\"\u003e\u003ccode\u003e852cd5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5166\"\u003e#5166\u003c/a\u003e from pypa/bugfix/5159-vendor-bin-free\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/11115ee8e5b533c2cd948272b02f339f23b6d20a\"\u003e\u003ccode\u003e11115ee\u003c/code\u003e\u003c/a\u003e Suppress deprecation warning.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/5cf9185dc8f2b3fbf140ebf6558798ccc0ce1077\"\u003e\u003ccode\u003e5cf9185\u003c/code\u003e\u003c/a\u003e Update vendored dependencies.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/cf59f41400c75326d381f2d1989027b229b59a59\"\u003e\u003ccode\u003ecf59f41\u003c/code\u003e\u003c/a\u003e Delete all binaries generated by vendored package install.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/89a598167c614ebaf7da441389bce35534b7cd7f\"\u003e\u003ccode\u003e89a5981\u003c/code\u003e\u003c/a\u003e Add missing newsfragments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/c0114af5484625c25e48cd85429445f9d6a1cfc0\"\u003e\u003ccode\u003ec0114af\u003c/code\u003e\u003c/a\u003e Postpone deprecation warnings related to PEP 639 to 2027-Feb-18 (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5115\"\u003e#5115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/de076038f164a3629c91e3f2bc88a7b9c4f5312d\"\u003e\u003ccode\u003ede07603\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;[CI] Constraint transient test dependency on pyobjc\u0026quot; (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5128\"\u003e#5128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/3afd5d66606c092131052e982266b322f0a0dd4b\"\u003e\u003ccode\u003e3afd5d6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;[CI] Constraint transient test dependency on pyobjc\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/adfb0c9e3d1789587d609228d9ea1d79272e4107\"\u003e\u003ccode\u003eadfb0c9\u003c/code\u003e\u003c/a\u003e Bump version: 80.10.0 → 80.10.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v80.9.0...v80.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `time-machine` from 2.19.0 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.0 (2025-11-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove mocking of \u003ccode\u003etime.monotonic()\u003c/code\u003e and \u003ccode\u003etime.monotonic_ns()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis mocking caused too many issues, such as causing freezes in asyncio event loops (\u003ccode\u003eIssue [#387](https://github.com/adamchainz/time-machine/issues/387) \u0026lt;https://github.com/adamchainz/time-machine/issues/387\u0026gt;\u003c/code\u003e\u003cstrong\u003e), preventing pytest-durations from timing tests correctly (\u003ccode\u003eIssue [#505](https://github.com/adamchainz/time-machine/issues/505) \u0026lt;https://github.com/adamchainz/time-machine/issues/505\u0026gt;\u003c/code\u003e\u003c/strong\u003e), and triggering timeouts in psycopg (\u003ccode\u003eIssue [#509](https://github.com/adamchainz/time-machine/issues/509) \u0026lt;https://github.com/adamchainz/time-machine/issues/509\u0026gt;\u003c/code\u003e__).\nThe root cause here is that mocking the monotonic clock breaks its contract, allowing it to move backwards when it’s meant to only move forwards.\u003c/p\u003e\n\u003cp\u003eAs an alternative, use |unittest.mock|__ to mock the monotonic function for the specific tested modules that need it.\nThat means that your code should import \u003ccode\u003emonotonic()\u003c/code\u003e or \u003ccode\u003emonotonic_ns()\u003c/code\u003e directly, so that your tests can mock it in those places only.\nFor example, if your system under test looks like:\u003c/p\u003e\n\u003cp\u003e.. |unittest.mock| replace:: \u003ccode\u003eunittest.mock\u003c/code\u003e\n__ \u003ca href=\"https://docs.python.org/3/library/unittest.mock.html\"\u003ehttps://docs.python.org/3/library/unittest.mock.html\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.19.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pytz` from 2025.2.0.20250809 to 2025.2.0.20251108\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/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 \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/HowTheyVote/howtheyvote/pull/1376","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/HowTheyVote%2Fhowtheyvote/issues/1376","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1376/packages"}},{"old_version":"3.1.0","new_version":"3.2.0","update_type":"minor","path":null,"pr_created_at":"2026-01-01T00:01:50.000Z","version_change":"3.1.0 → 3.2.0","issue":{"uuid":"3773917815","node_id":"PR_kwDODDrsrs67KgcW","number":924,"state":"open","title":"build(deps-dev): bump time-machine from 3.1.0 to 3.2.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-01T00:01:50.000Z","updated_at":"2026-01-01T00:06:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"time-machine","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.1.0 to 3.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.1.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/marcosschroh/dataclasses-avroschema/pull/924","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcosschroh%2Fdataclasses-avroschema/issues/924","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/924/packages"}},{"old_version":"3.1.0","new_version":"3.2.0","update_type":"minor","path":"/api","pr_created_at":"2025-12-25T06:08:54.000Z","version_change":"3.1.0 → 3.2.0","issue":{"uuid":"3761467098","node_id":"PR_kwDOBvR5As66iWz-","number":20766,"state":"open","title":"build(deps): bump time-machine from 3.1.0 to 3.2.0 in /api","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-25T06:08:54.000Z","updated_at":"2025-12-30T18:00:44.459Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"time-machine","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":"/api","ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.1.0 to 3.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.0 (2025-12-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd :attr:\u003ccode\u003etime_machine.naive_mode\u003c/code\u003e to control how time-machine interprets naive datetimes.\u003c/p\u003e\n\u003cp\u003eThe default mode is \u003ccode\u003eMIXED\u003c/code\u003e, which preserves existing behaviour: naive \u003ccode\u003edatetime\u003c/code\u003e objects and \u003ccode\u003edate\u003c/code\u003e objects are interpreted as UTC, while naive datetime strings are interpreted as local time.\u003c/p\u003e\n\u003cp\u003eThree alternative modes are available:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUTC\u003c/code\u003e: naive datetimes are always interpreted as UTC.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLOCAL\u003c/code\u003e: naive datetimes are interpreted as local time, matching Python's default semantics, and freezegun.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eERROR\u003c/code\u003e: naive datetimes raise a \u003ccode\u003eRuntimeError\u003c/code\u003e, ensuring your tests are isolated from the current timezone.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003cp\u003eIt’s recommended you use \u003ccode\u003eLOCAL\u003c/code\u003e or \u003ccode\u003eERROR\u003c/code\u003e to avoid confusion around naive datetimes.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#591](https://github.com/adamchainz/time-machine/issues/591) \u0026lt;https://github.com/adamchainz/time-machine/pull/591\u0026gt;\u003c/code\u003e__. Thanks to Paolo Melchiorre for review.\u003c/p\u003e\n\u003cp\u003eThanks to PhML, Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, Andy Freeland, and Paul Ganssle for their input on \u003ccode\u003eIssue [#257](https://github.com/adamchainz/time-machine/issues/257) \u0026lt;https://github.com/adamchainz/time-machine/issues/257\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRaise \u003ccode\u003eRuntimeError\u003c/code\u003e when attempting to start time travelling if \u003ccode\u003efreezegun \u0026lt;https://pypi.org/project/freezegun/\u0026gt;\u003c/code\u003e__ is active.\u003c/p\u003e\n\u003cp\u003eThis change should help avoid surprises when migrating complex test suites from freezegun to time-machine.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#590](https://github.com/adamchainz/time-machine/issues/590) \u0026lt;https://github.com/adamchainz/time-machine/pull/590\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/1b7ac45defb26c72076dc202aba46967c8c28fa9\"\u003e\u003ccode\u003e1b7ac45\u003c/code\u003e\u003c/a\u003e Version 3.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9284e4407030e58a0e8c0a0f89f8983e2c81b9c1\"\u003e\u003ccode\u003e9284e44\u003c/code\u003e\u003c/a\u003e Change freezegun detection (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/dab094e8d3af7c5b3104588c59b0cd8d69cece50\"\u003e\u003ccode\u003edab094e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003enaive_mode\u003c/code\u003e attribute to control handling of naive datetimes (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/242f897e168495c1923e21f3487e1750c91236e5\"\u003e\u003ccode\u003e242f897\u003c/code\u003e\u003c/a\u003e Raise RuntimeError if freezegun is active when starting time-machine (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/4c014f2afa60e80775b8a5b0295f29726be633e4\"\u003e\u003ccode\u003e4c014f2\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ef6c030ea35ca5b9025fbcfafd6d6caee4106616\"\u003e\u003ccode\u003eef6c030\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/96be98524dc0114e322a7c92ab8ba03c4ba26f18\"\u003e\u003ccode\u003e96be985\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b57d54ea4107114b95afe8ec93e8d3f6e83354fc\"\u003e\u003ccode\u003eb57d54e\u003c/code\u003e\u003c/a\u003e Build documentation on Python 3.14 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.1.0...3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/pass-culture/pass-culture-main/pull/20766","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pass-culture%2Fpass-culture-main/issues/20766","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/20766/packages"}},{"old_version":"3.0.0","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2025-12-01T03:04:54.000Z","version_change":"3.0.0 → 3.1.0","issue":{"uuid":"3679015689","node_id":"PR_kwDOBXYo-M62PaCT","number":12568,"state":"open","title":"chore(deps-dev): bump time-machine from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["Dependencies","Python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-01T03:04:54.000Z","updated_at":"2025-12-01T05:50:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"time-machine","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.0.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.0.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/freqtrade/freqtrade/pull/12568","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/freqtrade%2Ffreqtrade/issues/12568","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12568/packages"}},{"old_version":"2.19.0","new_version":"3.1.0","update_type":"major","path":null,"pr_created_at":"2025-11-24T18:59:49.000Z","version_change":"2.19.0 → 3.1.0","issue":{"uuid":"3660149006","node_id":"PR_kwDOK6tdj861Q_wF","number":539,"state":"closed","title":"chore(deps): bump time-machine from 2.19.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-02T19:22:25.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-24T18:59:49.000Z","updated_at":"2025-12-02T19:22:26.000Z","time_to_close":692556,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"time-machine","old_version":"2.19.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.19.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.0 (2025-11-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove mocking of \u003ccode\u003etime.monotonic()\u003c/code\u003e and \u003ccode\u003etime.monotonic_ns()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis mocking caused too many issues, such as causing freezes in asyncio event loops (\u003ccode\u003eIssue [#387](https://github.com/adamchainz/time-machine/issues/387) \u0026lt;https://github.com/adamchainz/time-machine/issues/387\u0026gt;\u003c/code\u003e\u003cstrong\u003e), preventing pytest-durations from timing tests correctly (\u003ccode\u003eIssue [#505](https://github.com/adamchainz/time-machine/issues/505) \u0026lt;https://github.com/adamchainz/time-machine/issues/505\u0026gt;\u003c/code\u003e\u003c/strong\u003e), and triggering timeouts in psycopg (\u003ccode\u003eIssue [#509](https://github.com/adamchainz/time-machine/issues/509) \u0026lt;https://github.com/adamchainz/time-machine/issues/509\u0026gt;\u003c/code\u003e__).\nThe root cause here is that mocking the monotonic clock breaks its contract, allowing it to move backwards when it’s meant to only move forwards.\u003c/p\u003e\n\u003cp\u003eAs an alternative, use |unittest.mock|__ to mock the monotonic function for the specific tested modules that need it.\nThat means that your code should import \u003ccode\u003emonotonic()\u003c/code\u003e or \u003ccode\u003emonotonic_ns()\u003c/code\u003e directly, so that your tests can mock it in those places only.\nFor example, if your system under test looks like:\u003c/p\u003e\n\u003cp\u003e.. |unittest.mock| replace:: \u003ccode\u003eunittest.mock\u003c/code\u003e\n__ \u003ca href=\"https://docs.python.org/3/library/unittest.mock.html\"\u003ehttps://docs.python.org/3/library/unittest.mock.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# example.py\nfrom time import monotonic\n\u003cp\u003edef measurement():\nstart = monotonic()\n...\nend = monotonic()\nreturn end - start\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e…then your tests can mock \u003ccode\u003emonotonic()\u003c/code\u003e like this:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003efrom unittest import TestCase, mock\n\u003cp\u003eimport example\u003c/p\u003e\n\u003cp\u003eclass MeasurementTests(TestCase):\ndef test_success(self):\nwith mock.patch.object(example, \u0026quot;monotonic\u0026quot;, side_effect=[0.0, 1.23]):\nresult = example.measurement()\nassert result == 1.23\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/5d2e8dd4a427988e53d8fcce74b717dd4d0f9538\"\u003e\u003ccode\u003e5d2e8dd\u003c/code\u003e\u003c/a\u003e Version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/39ba19f3409b6ab32e04fc5ed10016efa85b7675\"\u003e\u003ccode\u003e39ba19f\u003c/code\u003e\u003c/a\u003e Upgrade cibuildwheel to 3.3.0 (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/581\"\u003e#581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/3a0d5dd43e440761bfff4696856db301cf189560\"\u003e\u003ccode\u003e3a0d5dd\u003c/code\u003e\u003c/a\u003e Raise ValueError from escape_hatch functions when not travelling (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/580\"\u003e#580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/ac23916b4d37d838d04fbb0709d76ed50e7113e2\"\u003e\u003ccode\u003eac23916\u003c/code\u003e\u003c/a\u003e Improve usage documentation (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/579\"\u003e#579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d10f0003cd619636de38373f774759e84e6ce3ac\"\u003e\u003ccode\u003ed10f000\u003c/code\u003e\u003c/a\u003e Parse str destinations with datetime.fromisoformat() first (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b82045133a6414e84c4521c5d50322861026d62f\"\u003e\u003ccode\u003eb820451\u003c/code\u003e\u003c/a\u003e Reorder changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/48f1af50f646198196c6d7ed7a14f7f23ed88482\"\u003e\u003ccode\u003e48f1af5\u003c/code\u003e\u003c/a\u003e Make dateutil an optional dependency (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/576\"\u003e#576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/5559f89b6d61cf4156f64eb87919a7fdd2477b4e\"\u003e\u003ccode\u003e5559f89\u003c/code\u003e\u003c/a\u003e Remove Python 3.9 from cibuildwheel target list (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/575\"\u003e#575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.19.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=uv\u0026previous-version=2.19.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/Jenselme/legadilo/pull/539","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jenselme%2Flegadilo/issues/539","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/539/packages"}},{"old_version":"3.0.0","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2025-11-24T06:30:42.000Z","version_change":"3.0.0 → 3.1.0","issue":{"uuid":"3657265617","node_id":"PR_kwDOOQxoIM61HT16","number":247,"state":"open","title":"Bump time-machine from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python","stale"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-11-24T06:30:42.000Z","updated_at":"2026-01-26T08:04:08.350Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.0.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.0.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/home-assistant-cn/supervisor/pull/247","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/home-assistant-cn%2Fsupervisor/issues/247","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/247/packages"}},{"old_version":"3.0.0","new_version":"3.1.0","update_type":"minor","path":"/backend","pr_created_at":"2025-11-24T01:31:23.000Z","version_change":"3.0.0 → 3.1.0","issue":{"uuid":"3656757045","node_id":"PR_kwDOPNm0M861FmPi","number":33,"state":"closed","title":"Bump time-machine from 3.0.0 to 3.1.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-02T15:11:48.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-24T01:31:23.000Z","updated_at":"2025-12-02T15:11:50.000Z","time_to_close":740425,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.0.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.0.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=uv\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/sortitionfoundation/opendlp/pull/33","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sortitionfoundation%2Fopendlp/issues/33","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/33/packages"}},{"old_version":"3.0.0","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2025-11-21T16:02:53.000Z","version_change":"3.0.0 → 3.1.0","issue":{"uuid":"3652250838","node_id":"PR_kwDOBAULyM60227I","number":9765,"state":"closed","title":"Bump time-machine from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["inmantaci"],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2025-11-21T17:08:11.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-21T16:02:53.000Z","updated_at":"2025-11-21T17:08:23.000Z","time_to_close":3918,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 3.0.0 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (2025-11-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize patching of \u003ccode\u003euuid\u003c/code\u003e module.\nBy avoiding using \u003ccode\u003eunittest.mock\u003c/code\u003e, this small overhead from starting \u003ccode\u003etime_machine.travel()\u003c/code\u003e has been reduced about 20x, from ~600ns to ~30ns by one benchmark.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#585](https://github.com/adamchainz/time-machine/issues/585) \u0026lt;https://github.com/adamchainz/time-machine/pull/585\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/b9f7500d03de270766fcfaf694f4beccf57eae5e\"\u003e\u003ccode\u003eb9f7500\u003c/code\u003e\u003c/a\u003e Version 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/965e906ec5b7acbeb348cf1dc85252918aa79f9e\"\u003e\u003ccode\u003e965e906\u003c/code\u003e\u003c/a\u003e Optimize patching of uuid module (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/3.0.0...3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/inmanta/inmanta-core/pull/9765","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/inmanta%2Finmanta-core/issues/9765","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9765/packages"}},{"old_version":"2.16.0","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-11-01T00:02:02.000Z","version_change":"2.16.0 → 2.19.0","issue":{"uuid":"3576869282","node_id":"PR_kwDODDrsrs6w7yP5","number":906,"state":"open","title":"build(deps-dev): bump time-machine from 2.16.0 to 2.19.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-11-01T00:02:02.000Z","updated_at":"2025-11-01T00:03:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.16.0 to 2.19.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=2.16.0\u0026new-version=2.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/marcosschroh/dataclasses-avroschema/pull/906","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcosschroh%2Fdataclasses-avroschema/issues/906","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/906/packages"}},{"old_version":"2.16.0","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-10-13T13:06:48.000Z","version_change":"2.16.0 → 2.19.0","issue":{"uuid":"3510007600","node_id":"PR_kwDOOYeBPM6tdglG","number":40,"state":"closed","title":"chore(deps): bump the runtime-dependencies group across 1 directory with 33 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2025-11-10T13:59:04.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T13:06:48.000Z","updated_at":"2025-11-10T13:59:06.000Z","time_to_close":2422336,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"runtime-dependencies","update_count":33,"packages":[{"name":"alembic","old_version":"1.15.2","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pip","old_version":"25.0.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.15"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.3.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"structlog","old_version":"25.2.0","new_version":"25.4.0","repository_url":"https://github.com/hynek/structlog"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.35.3","repository_url":"https://github.com/pypa/virtualenv"},{"name":"azure-storage-blob","old_version":"12.25.1","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-core","old_version":"1.33.0","new_version":"1.35.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.21.0","new_version":"1.25.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.1","repository_url":"https://github.com/googleapis/python-storage"},{"name":"pymssql","old_version":"2.3.4","new_version":"2.3.8","repository_url":"https://github.com/pymssql/pymssql"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.14","repository_url":"https://github.com/getmoto/moto"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-docker","old_version":"3.2.1","new_version":"3.2.3","repository_url":"https://github.com/avast/pytest-docker"},{"name":"pytest-structlog","old_version":"1.1","new_version":"1.2","repository_url":"https://github.com/wimglenn/pytest-structlog"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"setproctitle","old_version":"1.3.5","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"types-dateparser","old_version":"1.2.0.20250208","new_version":"1.2.2.20250809","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-jsonschema","old_version":"4.23.0.20241208","new_version":"4.25.1.20251009","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-dependencies group with 33 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.15.2` | `1.16.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [pip](https://github.com/pypa/pip) | `25.0.1` | `25.2` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.18.15` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.44` |\n| [structlog](https://github.com/hynek/structlog) | `25.2.0` | `25.4.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.35.3` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.25.1` | `12.26.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.33.0` | `1.35.1` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.21.0` | `1.25.1` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.1` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.3.4` | `2.3.8` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.14` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-docker](https://github.com/avast/pytest-docker) | `3.2.1` | `3.2.3` |\n| [pytest-structlog](https://github.com/wimglenn/pytest-structlog) | `1.1` | `1.2` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.5` | `1.3.7` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [types-dateparser](https://github.com/typeshed-internal/stub_uploader) | `1.2.0.20250208` | `1.2.2.20250809` |\n| [types-jsonschema](https://github.com/typeshed-internal/stub_uploader) | `4.23.0.20241208` | `4.25.1.20251009` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20250913` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n\n\nUpdates `alembic` from 1.15.2 to 1.16.5\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.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.4\u003c/h1\u003e\n\u003cp\u003eReleased: July 10, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue in new \u003ccode\u003epyproject.toml\u003c/code\u003e support where boolean values, such as\nthose used for the \u003ccode\u003erecursive_version_locations\u003c/code\u003e and \u003ccode\u003esourceless\u003c/code\u003e\nconfiguration parameters, would not be accepted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1694\"\u003e#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.3\u003c/h1\u003e\n\u003cp\u003eReleased: July 8, 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 new \u003ccode\u003epyproject_async\u003c/code\u003e template, combining the new \u003ccode\u003epyproject\u003c/code\u003e\ntemplate with the \u003ccode\u003easync\u003c/code\u003e template.  Pull request courtesy Alc-Alc.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1683\"\u003e#1683\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Add \u0026quot;module\u0026quot; post-write hook. This hook type is almost identical to the\nconsole_scripts hook, except it's running \u003ccode\u003epython -m black\u003c/code\u003e instead of\nusing black's \u003ccode\u003econsole_script\u003c/code\u003e. It is mainly useful for tools without\nconsole scripts (e.g. ruff), but has semantics closer to the\nconsole_scripts hook in that it finds the ruff module available to the\nrunning interpreter instead of finding an executable by path. Pull request\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\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 `anyio` from 4.9.0 to 4.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.25.1\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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra by \u003ca href=\"https://github.com/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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.24.1...v4.25.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.1...v4.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUnambiguously quote and escape properties in JSON path rendering by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop python\u0026lt;3.9 backports by \u003ca href=\"https://github.com/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\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/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\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.24.0...v4.24.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.0...v4.24.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculation of evaluated properties by \u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#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\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bkueng\"\u003e\u003ccode\u003e@​bkueng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1326\"\u003epython-jsonschema/jsonschema#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#1351\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.23.0...v4.24.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.24.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/331c38425519b69118d22ebe467ad230fb83a010\"\u003e\u003ccode\u003e331c384\u003c/code\u003e\u003c/a\u003e Add the fix to the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/c1ec0a645e913e83de95995f6efbbd358676abf6\"\u003e\u003ccode\u003ec1ec0a6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1398\"\u003e#1398\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/8e7d594faff13f8f663b306a0d86bea0ce5de6cb\"\u003e\u003ccode\u003e8e7d594\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1399\"\u003e#1399\u003c/a\u003e from python-jsonschema/dependabot/github_actions/act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/460f4fae42664773160f56ccc843a4fcea34f7cf\"\u003e\u003ccode\u003e460f4fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e from sirosen/improve-protocol-init-signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1e58409b71a9696b7bf9938ae8a3a48ef95ab29e\"\u003e\u003ccode\u003e1e58409\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/64bc2171624ef201bdbf35e47780348ce30935c5\"\u003e\u003ccode\u003e64bc217\u003c/code\u003e\u003c/a\u003e Add a typing test for the Validator protocol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6c25741bff889477680f9b0d1aa967ae35c38f43\"\u003e\u003ccode\u003e6c25741\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/bf603d59117f840916709fc87c6625df43d1fe72\"\u003e\u003ccode\u003ebf603d5\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6.4.3 to 6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a916d8f8253baa11bacc60f0868f0bab1e42d526\"\u003e\u003ccode\u003ea916d8f\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/de60f18bd97395a52a11b561eb62963e0ffe9e71\"\u003e\u003ccode\u003ede60f18\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1397\"\u003e#1397\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 25.0.1 to 25.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e25.2 (2025-07-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ccode\u003e[#13506](https://github.com/pypa/pip/issues/13506) \u0026lt;https://github.com/pypa/pip/issues/13506\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAutomatic download resumption and retrying is enabled by default. (\u003ccode\u003e[#13464](https://github.com/pypa/pip/issues/13464) \u0026lt;https://github.com/pypa/pip/issues/13464\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRequires-Python error message displays version clauses in numerical order. (\u003ccode\u003e[#13367](https://github.com/pypa/pip/issues/13367) \u0026lt;https://github.com/pypa/pip/issues/13367\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement getting the order to install a very large number of interdependent packages. (\u003ccode\u003e[#13424](https://github.com/pypa/pip/issues/13424) \u0026lt;https://github.com/pypa/pip/issues/13424\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow time taken instead of \u003ccode\u003eeta 0:00:00\u003c/code\u003e at download completion. (\u003ccode\u003e[#13483](https://github.com/pypa/pip/issues/13483) \u0026lt;https://github.com/pypa/pip/issues/13483\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eSpeed up small CLI tools by removing \u003ccode\u003eimport re\u003c/code\u003e from the console\nscript executable template. (\u003ccode\u003e[#13165](https://github.com/pypa/pip/issues/13165) \u0026lt;https://github.com/pypa/pip/issues/13165\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove warning when cloning from a Git reference that does not look like a commit hash. (\u003ccode\u003e[#12283](https://github.com/pypa/pip/issues/12283) \u0026lt;https://github.com/pypa/pip/issues/12283\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip config debug\u003c/code\u003e now correctly separates options as set by the different files\nat the same level. (\u003ccode\u003e[#12099](https://github.com/pypa/pip/issues/12099) \u0026lt;https://github.com/pypa/pip/issues/12099\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnsure truststore feature remains active even when a proxy is also in use. (\u003ccode\u003e[#13343](https://github.com/pypa/pip/issues/13343) \u0026lt;https://github.com/pypa/pip/issues/13343\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude sub-commands in tab completion. (\u003ccode\u003e[#13140](https://github.com/pypa/pip/issues/13140) \u0026lt;https://github.com/pypa/pip/issues/13140\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip list\u003c/code\u003e with the \u003ccode\u003ejson\u003c/code\u003e or \u003ccode\u003efreeze\u003c/code\u003e format enabled will no longer\ncrash when encountering a package with an invalid version. (\u003ccode\u003e[#13345](https://github.com/pypa/pip/issues/13345) \u0026lt;https://github.com/pypa/pip/issues/13345\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a hint if a system error is raised involving long filenames or path segments on Windows. (\u003ccode\u003e[#13346](https://github.com/pypa/pip/issues/13346) \u0026lt;https://github.com/pypa/pip/issues/13346\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResumed downloads are saved to the HTTP cache like any other normal download. (\u003ccode\u003e[#13441](https://github.com/pypa/pip/issues/13441) \u0026lt;https://github.com/pypa/pip/issues/13441\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfigured verbosity is consistently forwarded while calling Git during\nVCS operations. (\u003ccode\u003e[#13329](https://github.com/pypa/pip/issues/13329) \u0026lt;https://github.com/pypa/pip/issues/13329\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress the progress bar, when running with \u003ccode\u003e--log\u003c/code\u003e and \u003ccode\u003e--quiet\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eConsequently, a new \u003ccode\u003eauto\u003c/code\u003e mode for \u003ccode\u003e--progress-bar\u003c/code\u003e has been added.\n\u003ccode\u003eauto\u003c/code\u003e will enable progress bars unless suppressed by \u003ccode\u003e--quiet\u003c/code\u003e,\nwhile \u003ccode\u003eon\u003c/code\u003e will always enable progress bars. (\u003ccode\u003e[#10915](https://github.com/pypa/pip/issues/10915) \u0026lt;https://github.com/pypa/pip/issues/10915\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local URLs with non-\u003ccode\u003efile\u003c/code\u003e schemes. (\u003ccode\u003e[#13509](https://github.com/pypa/pip/issues/13509) \u0026lt;https://github.com/pypa/pip/issues/13509\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local file URLs on Windows in newer Python versions. (\u003ccode\u003e[#13510](https://github.com/pypa/pip/issues/13510) \u0026lt;https://github.com/pypa/pip/issues/13510\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix remaining test failures in Python 3.14 by adjusting \u003ccode\u003epath_to_url\u003c/code\u003e and similar functions. (\u003ccode\u003e[#13423](https://github.com/pypa/pip/issues/13423) \u0026lt;https://github.com/pypa/pip/issues/13423\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing \u003ccode\u003enetwork\u003c/code\u003e test markings, making the suite pass in offline\nenvironments again. (\u003ccode\u003e[#13378](https://github.com/pypa/pip/issues/13378) \u0026lt;https://github.com/pypa/pip/issues/13378\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CacheControl to 0.14.3\u003c/li\u003e\n\u003cli\u003eUpgrade certifi to 2025.7.14\u003c/li\u003e\n\u003cli\u003eUpgrade distlib to 0.4.0\u003c/li\u003e\n\u003cli\u003eUpgrade msgpack to 1.1.1\u003c/li\u003e\n\u003cli\u003eUpgrade platformdirs to 4.3.8\u003c/li\u003e\n\u003cli\u003eUpgrade pygments to 2.19.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.32.4\u003c/li\u003e\n\u003cli\u003eUpgrade resolvelib to 1.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/pip/commit/2e05cae3da2cfafa6dce58167a25b7dba4bc2a33\"\u003e\u003ccode\u003e2e05cae\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/f24906109c84ca51eef57a4f925298d38ff31df3\"\u003e\u003ccode\u003ef249061\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/78d15a5da09c6fbc5c2cd88fb5bd67bfd7fb0637\"\u003e\u003ccode\u003e78d15a5\u003c/code\u003e\u003c/a\u003e Copyedit news entries before 25.2 (again)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4fe68d78ae8b117ad413ec61c518dd600af08bf0\"\u003e\u003ccode\u003e4fe68d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13506\"\u003e#13506\u003c/a\u003e from ichard26/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/775a86f2bac8894771911ab068b18f09550cb6f0\"\u003e\u003ccode\u003e775a86f\u003c/code\u003e\u003c/a\u003e Fix broken unit tests \u0026amp; xfail weird failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2773b13baa59ec68b03df9f0f73e4e3c21fcd958\"\u003e\u003ccode\u003e2773b13\u003c/code\u003e\u003c/a\u003e Reformat and add --allow-unix-socket to pytest config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e384d1032c189312ac21f23844c9c6f1f4750eb1\"\u003e\u003ccode\u003ee384d10\u003c/code\u003e\u003c/a\u003e Declare Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4117dc7c6b606d825904ffbe35d51012923374f4\"\u003e\u003ccode\u003e4117dc7\u003c/code\u003e\u003c/a\u003e Always remove authority section when cleaning local URL path (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13510\"\u003e#13510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2e21934b5c35a0e6b41fd586399cd36ed304c03c\"\u003e\u003ccode\u003e2e21934\u003c/code\u003e\u003c/a\u003e Fix cleaning of local URLs with VCS schemes (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13509\"\u003e#13509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/853a593191d7205b837d32a72e0eb7e7b81e1821\"\u003e\u003ccode\u003e853a593\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003epath_to_url()\u003c/code\u003e tests (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13496\"\u003e#13496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/25.0.1...25.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/HISTORY.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.1.0\u003c/h1\u003e\n\u003cp\u003e2025-09-17\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2581_, [Windows]: publish ARM64 wheels.  (patch by Matthieu Darbois)\u003c/li\u003e\n\u003cli\u003e2571_, [FreeBSD]: Dropped support for FreeBSD 8 and earlier. FreeBSD 8 was\nmaintained from 2009 to 2013.\u003c/li\u003e\n\u003cli\u003e2575_: introduced \u003ccode\u003edprint\u003c/code\u003e CLI tool to format .yml and .md files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2473_, [macOS]: Fix build issue on macOS 11 and lower.\u003c/li\u003e\n\u003cli\u003e2494_, [Windows]: All APIs dealing with paths, such as\n\u003ccode\u003eProcess.memory_maps()\u003c/code\u003e\u003cem\u003e, \u003ccode\u003eProcess.exe()\u003c/code\u003e\u003c/em\u003e and \u003ccode\u003eProcess.open_files()\u003c/code\u003e_ does\nnot properly handle UNC paths. Paths such as \u003ccode\u003e\\\\??\\\\C:\\\\Windows\\\\Temp\u003c/code\u003e and\n\u003ccode\u003e'\\\\Device\\\\HarddiskVolume1\\\\Windows\\\\Temp'\u003c/code\u003e are now converted to\n\u003ccode\u003eC:\\\\Windows\\\\Temp\u003c/code\u003e.  (patch by Ben Peddell)\u003c/li\u003e\n\u003cli\u003e2506_, [Windows]: Windows service APIs had issues with unicode services using\nspecial characters in their name.\u003c/li\u003e\n\u003cli\u003e2514_, [Linux]: \u003ccode\u003eProcess.cwd()\u003c/code\u003e_ sometimes fail with \u003ccode\u003eFileNotFoundError\u003c/code\u003e due\nto a race condition.\u003c/li\u003e\n\u003cli\u003e2526_, [Linux]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e\u003cem\u003e, which is used to univocally\nidentify a process over time, is subject to system clock updates, and as such\ncan lead to \u003ccode\u003eProcess.is_running()\u003c/code\u003e\u003c/em\u003e returning a wrong result. A monotonic\ncreation time is now used instead.  (patch by Jonathan Kohler)\u003c/li\u003e\n\u003cli\u003e2528_, [Linux]: \u003ccode\u003eProcess.children()\u003c/code\u003e_ may raise \u003ccode\u003ePermissionError\u003c/code\u003e. It will\nnow raise \u003ccode\u003eAccessDenied\u003c/code\u003e_ instead.\u003c/li\u003e\n\u003cli\u003e2540_, [macOS]: \u003ccode\u003eboot_time()\u003c/code\u003e_ is off by 45 seconds (C precision issue).\u003c/li\u003e\n\u003cli\u003e2541_, 2570_, 2578_ [Linux], [macOS], [NetBSD]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e_ does\nnot reflect system clock updates.\u003c/li\u003e\n\u003cli\u003e2542_: if system clock is updated \u003ccode\u003eProcess.children()\u003c/code\u003e_ and\n\u003ccode\u003eProcess.parent()\u003c/code\u003e_ may not be able to return the right information.\u003c/li\u003e\n\u003cli\u003e2545_: [Illumos]: Fix handling of MIB2_UDP_ENTRY in \u003ccode\u003enet_connections()\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003e2552_, [Windows]: \u003ccode\u003eboot_time()\u003c/code\u003e_ didn't take into account the time spent\nduring suspend / hibernation.\u003c/li\u003e\n\u003cli\u003e2560_, [Linux]: \u003ccode\u003eProcess.memory_maps()\u003c/code\u003e_ may crash with \u003ccode\u003eIndexError\u003c/code\u003e on\nRISCV64 due to a malformed \u003ccode\u003e/proc/{PID}/smaps\u003c/code\u003e file.  (patch by Julien\nStephan)\u003c/li\u003e\n\u003cli\u003e2586_, [macOS], [CRITICAL]: fixed different places in C code which can\ntrigger a segfault.\u003c/li\u003e\n\u003cli\u003e2604_, [Linux]: \u003ccode\u003evirtual_memory()\u003c/code\u003e_ \u0026quot;used\u0026quot; memory does not match recent\nversions of \u003ccode\u003efree\u003c/code\u003e CLI utility.  (patch by Isaac K. Ko)\u003c/li\u003e\n\u003cli\u003e2605_, [Linux]: \u003ccode\u003epsutil.sensors_battery()\u003c/code\u003e reports a negative amount for\nseconds left.\u003c/li\u003e\n\u003cli\u003e2607_, [Windows]: \u003ccode\u003eWindowsService.description()\u003c/code\u003e method may fail with\n\u003ccode\u003eERROR_NOT_FOUND\u003c/code\u003e. Now it returns an empty string instead.\u003c/li\u003e\n\u003cli\u003e2610:, [macOS], [CRITICAL]: fix \u003ccode\u003ecpu_freq()\u003c/code\u003e_ segfault on ARM architectures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/0d18187e79b349e577fadabd3589f8fdbf99bf5a\"\u003e\u003ccode\u003e0d18187\u003c/code\u003e\u003c/a\u003e Revert HISTORY notes about \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e. We still do publish 3.6 and 3.7 wheels.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/229e2de232860fe22e2c2884c20b8979c643d5c6\"\u003e\u003ccode\u003e229e2de\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/fb75b28226ec8e6b9e5b9eefa05a62de579cc114\"\u003e\u003ccode\u003efb75b28\u003c/code\u003e\u003c/a\u003e Chore: skip CI tests except on Python 3.8 and 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/3a4c01638bc61c77f43a05aea5bc6e1ddc81c6c4\"\u003e\u003ccode\u003e3a4c016\u003c/code\u003e\u003c/a\u003e Stop publishing wheels for Python 3.6 and 3.7 (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/83e4f7fdd76051dd8e0eeed99e2bf5fc881a2960\"\u003e\u003ccode\u003e83e4f7f\u003c/code\u003e\u003c/a\u003e OSX: disable failing test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/df0d4e2637917377bd5971f1745e881b75f2c6e2\"\u003e\u003ccode\u003edf0d4e2\u003c/code\u003e\u003c/a\u003e Call GetExtended[Tcp|Udp]Table twice under free-threaded build (round 2) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2627\"\u003e#2627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/dcbfb81e863fa2b8688ccd8da27b09b539404688\"\u003e\u003ccode\u003edcbfb81\u003c/code\u003e\u003c/a\u003e [Windows] fix unicode issues around service APIs (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2626\"\u003e#2626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ef72dcd076f1cec94ba50ec30b5dbebb272845d0\"\u003e\u003ccode\u003eef72dcd\u003c/code\u003e\u003c/a\u003e revert \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2590\"\u003e#2590\u003c/a\u003e (Call GetExtended[Tcp|Udp]Table twice under free-threaded build)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8773698006d387db90b3982d78fd4ff6b2ebe71c\"\u003e\u003ccode\u003e8773698\u003c/code\u003e\u003c/a\u003e small refact around UTXENT_MUTEX_LOCK\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/13b711fc3ffa384d481e03881e46ae48009c4eeb\"\u003e\u003ccode\u003e13b711f\u003c/code\u003e\u003c/a\u003e Lock around uses of getutent/setutent/endutent (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2615\"\u003e#2615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/release-7.0.0...release-7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\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/theskumar/python-dotenv/commit/16e660d384b942b11879b44500afbbe021650448\"\u003e\u003ccode\u003e16e660d\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.0 → 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/667e82f18d6e5306894c8746c46b1da2d031bd23\"\u003e\u003ccode\u003e667e82f\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/9d85edb3b8652de4601f9ad8a7a49ad9909f898a\"\u003e\u003ccode\u003e9d85edb\u003c/code\u003e\u003c/a\u003e fix(cli): issue with execvpe on Windows (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8411987b9301f716245074872afa30646e9b9eb7\"\u003e\u003ccode\u003e8411987\u003c/code\u003e\u003c/a\u003e fix: ensure find_dotenv work reliably on python 3.13 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/01f899733de664cda0550207067eb36a1795062f\"\u003e\u003ccode\u003e01f8997\u003c/code\u003e\u003c/a\u003e docs update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.2 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\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 `ruamel-yaml` from 0.18.10 to 0.18.15\n\nUpdates `smart-open` from 7.1.0 to 7.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/releases\"\u003esmart-open's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003episkvorky/smart_open#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003episkvorky/smart_open#877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003episkvorky/smart_open#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003episkvorky/smart_open#875\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0.post1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003episkvorky/smart_open#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI badge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003episkvorky/smart_open#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003episkvorky/smart_open#871\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nThis version was yanked from PyPI because \u003ccode\u003epyproject.toml\u003c/code\u003e falsely claimed that python 3.7 was still supported.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003episkvorky/smart_open#857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003episkvorky/smart_open#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003episkvorky/smart_open#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003episkvorky/smart_open#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003episkvorky/smart_open#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003episkvorky/smart_open#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eModernize python packaging by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003episkvorky/smart_open#851\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.2.0\u003c/h2\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/blob/develop/CHANGELOG.md\"\u003esmart-open's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.3.1, 2025-09-08\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003e#877\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003e#878\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003e#875\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0.post1, 2025-07-03\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003e#868\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003e#867\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix CI badge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003e#869\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0, 2025-07-01\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003e#857\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003e#853\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003e#861\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003e#864\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003e#854\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernize python packaging (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003e#851\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/c17ae23c1cda0ba84d72ae12dc38442a57bd69e0\"\u003e\u003ccode\u003ec17ae23\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/b54438fb7d624cac8cde33feaea5ba22017d0d7e\"\u003e\u003ccode\u003eb54438f\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/676099ecc7889b3def7981ac56f888d8fcbb4a9b\"\u003e\u003ccode\u003e676099e\u003c/code\u003e\u003c/a\u003e Add .xz and increase performance of compression module (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/35843b97205a0fedec42bd3d3fa6d1afba6158e1\"\u003e\u003ccode\u003e35843b9\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5fefc681d16d0cbdb6a750d3209530a7ef549b98\"\u003e\u003ccode\u003e5fefc68\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/877\"\u003e#877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/414e2c45d0cbf49c38c677ce4b468e537386a4b0\"\u003e\u003ccode\u003e414e2c4\u003c/code\u003e\u003c/a\u003e Fix release.sh for the final merge back into develop (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/872\"\u003e#872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5313e526440b4ad53dd8850a3e53db9f35dc6fab\"\u003e\u003ccode\u003e5313e52\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/baed6541f6fdc1e48cf40cff5ca038bfa5db4543\"\u003e\u003ccode\u003ebaed654\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/aed8895e2b7463d624e36c98ef5585d243e7612d\"\u003e\u003ccode\u003eaed8895\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/69751d5405d7be4f57885ceba8811dcfa8ebea62\"\u003e\u003ccode\u003e69751d5\u003c/code\u003e\u003c/a\u003e Drop 3.7 support in pyproject.toml (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/871\"\u003e#871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.1.0...v7.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\n...\n\n_Description has been truncated_","html_url":"https://github.com/markhallen/dependabot-test-meltano/pull/40","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/markhallen%2Fdependabot-test-meltano/issues/40","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/40/packages"}},{"old_version":"2.16.0","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-10-01T15:08:58.000Z","version_change":"2.16.0 → 2.19.0","issue":{"uuid":"2878655665","node_id":"PR_kwDOLMDPB86rlMyx","number":216,"state":"open","title":"Bump the minor group with 10 updates","user":"dependabot[bot]","labels":["part:tooling","type:tech-debt","part:dispatcher"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-01T15:08:58.000Z","updated_at":"2025-10-01T16:23:11.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor","update_count":10,"packages":[{"name":"asyncclick","old_version":"8.1.8","new_version":"8.2.2.2","repository_url":"https://github.com/python-trio/asyncclick"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"markdown","old_version":"3.8.2","new_version":"3.9","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mkdocs-macros-plugin","old_version":"1.3.9","new_version":"1.4.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"mypy","old_version":"1.17.1","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"types-markdown","old_version":"3.8.0.20250809","new_version":"3.9.0.20250906","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-protobuf","old_version":"6.30.2.20250703","new_version":"6.32.1.20250918","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pytest-mock","old_version":"3.14.1","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"hypothesis","old_version":"6.136.8","new_version":"6.140.2","repository_url":"https://github.com/HypothesisWorks/hypothesis"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor group with 10 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [asyncclick](https://github.com/python-trio/asyncclick) | `8.1.8` | `8.2.2.2` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8.2` | `3.9` |\n| [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin) | `1.3.9` | `1.4.0` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.18.2` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.8.0.20250809` | `3.9.0.20250906` |\n| [types-protobuf](https://github.com/typeshed-internal/stub_uploader) | `6.30.2.20250703` | `6.32.1.20250918` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.1` | `3.15.1` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.136.8` | `6.140.2` |\n\nUpdates `asyncclick` from 8.1.8 to 8.2.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-trio/asyncclick/blob/main/CHANGES.rst\"\u003easyncclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: asyncclick\u003c/p\u003e\n\u003ch2\u003easyncclick 8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop the \u003cstrong\u003eversion\u003c/strong\u003e attribute. Use :mod:\u003ccode\u003epkg_resouces\u003c/code\u003e or\n:mod:\u003ccode\u003eimportlib.metadata\u003c/code\u003e (since Python 3.8) instead.\u003c/li\u003e\n\u003cli\u003eDrop enter_context and enter_async_context. Use\n\u003ccode\u003eContext.with_resource\u003c/code\u003eand \u003ccode\u003eContext.with_async_resource\u003c/code\u003e\ninstead.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eContext.close()\u003c/code\u003e method is now async and thus has been\nrenamed to \u003ccode\u003eContext.aclose()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eYou can now select the AnyIO back-end to use with the\n\u003ccode\u003e@asyncclick.async_backend(NAME)\u003c/code\u003e decorator. The old method of setting\n\u003ccode\u003easyncclick.anyio_backend=NAME\u003c/code\u003e still works.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix flag value handling for flag options with a provided type. :issue:\u003ccode\u003e2894\u003c/code\u003e\n:issue:\u003ccode\u003e2897\u003c/code\u003e :pr:\u003ccode\u003e2930\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix shell completion for nested groups. :issue:\u003ccode\u003e2906\u003c/code\u003e :pr:\u003ccode\u003e2907\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFlush \u003ccode\u003esys.stderr\u003c/code\u003e at the end of \u003ccode\u003eCliRunner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e2682\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix EOF handling for stdin input in CliRunner. :issue:\u003ccode\u003e2787\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-trio/asyncclick/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 25.1.0 to 25.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild gallery docker image with python3-slim and reduce image size (\u003ca href=\"https://redirect.github.com/psf/black/issues/4686\"\u003e#4686\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.9.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for pre-python 3.7 \u003ccode\u003eawait/async\u003c/code\u003e as soft keywords/variable names\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash while formatting a long \u003ccode\u003edel\u003c/code\u003e statement containing tuples (\u003ca href=\"https://redirect.github.com/psf/black/issues/4628\"\u003e#4628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash while formatting expressions using the walrus operator in complex \u003ccode\u003ewith\u003c/code\u003e\nstatements (\u003ca href=\"https://redirect.github.com/psf/black/issues/4630\"\u003e#4630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e# fmt: skip\u003c/code\u003e followed by a comment at the end of file (\u003ca href=\"https://redirect.github.com/psf/black/issues/4635\"\u003e#4635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when a tuple appears in the \u003ccode\u003eas\u003c/code\u003e clause of a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when tuple is used as a context manager inside a \u003ccode\u003ewith\u003c/code\u003e statement (\u003ca href=\"https://redirect.github.com/psf/black/issues/4646\"\u003e#4646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when formatting a \u003ccode\u003e\\\u003c/code\u003e followed by a \u003ccode\u003e\\r\u003c/code\u003e followed by a comment (\u003ca href=\"https://redirect.github.com/psf/black/issues/4663\"\u003e#4663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on a \u003ccode\u003e\\\\r\\n\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4673\"\u003e#4673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on \u003ccode\u003eawait ...\u003c/code\u003e (where \u003ccode\u003e...\u003c/code\u003e is a literal \u003ccode\u003eEllipsis\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4676\"\u003e#4676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on parenthesized expression inside a type parameter bound (\u003ca href=\"https://redirect.github.com/psf/black/issues/4684\"\u003e#4684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when using line ranges excluding indented single line decorated items\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a bug where one-liner functions/conditionals marked with \u003ccode\u003e# fmt: skip\u003c/code\u003e would still\nbe formatted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4552\"\u003e#4552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emultiline_string_handling\u003c/code\u003e with ternaries and dictionaries (\u003ca href=\"https://redirect.github.com/psf/black/issues/4657\"\u003e#4657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003estring_processing\u003c/code\u003e would not split f-strings directly after\nexpressions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4680\"\u003e#4680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove parentheses around multiple exception types in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without\n\u003ccode\u003eas\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to normalize file newlines both from\nand to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRewrite tokenizer to improve performance and compliance (\u003ca href=\"https://redirect.github.com/psf/black/issues/4536\"\u003e#4536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where certain unusual expressions (e.g., lambdas) were not accepted in type\nparameter bounds and defaults. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4602\"\u003e#4602\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using an extra process when running with only one worker (\u003ca href=\"https://redirect.github.com/psf/black/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eIntegrations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the version check in the vim file to reject Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4567\"\u003e#4567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance GitHub Action \u003ccode\u003epsf/black\u003c/code\u003e to read Black version from an additional section in\npyproject.toml: \u003ccode\u003e[project.dependency-groups]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4606\"\u003e#4606\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/af0ba72a73598c76189d6dd1b21d8532255d5942\"\u003e\u003ccode\u003eaf0ba72\u003c/code\u003e\u003c/a\u003e Prepare docs for release 25.9.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ffc01a027580d99401abb3197e83d50dc4f4c746\"\u003e\u003ccode\u003effc01a0\u003c/code\u003e\u003c/a\u003e Fix schema generation error caused by new click version (\u003ca href=\"https://redirect.github.com/psf/black/issues/4750\"\u003e#4750\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/626b32fe2b5387656be6694da9a4b7a3148fb892\"\u003e\u003ccode\u003e626b32f\u003c/code\u003e\u003c/a\u003e Add normalizing for \u003ccode\u003e\\r\u003c/code\u003e style newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/57a461258f324e33bca189b2eb49d7f7a944ffe7\"\u003e\u003ccode\u003e57a4612\u003c/code\u003e\u003c/a\u003e Fix mypy type issue (\u003ca href=\"https://redirect.github.com/psf/black/issues/4745\"\u003e#4745\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4f6ad7cf8c3092e0fb4d82f54fe77ccde134468a\"\u003e\u003ccode\u003e4f6ad7c\u003c/code\u003e\u003c/a\u003e Wrap the \u003ccode\u003ein\u003c/code\u003e clause of comprehensions across lines if necessary (\u003ca href=\"https://redirect.github.com/psf/black/issues/4699\"\u003e#4699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/24f516961720c5578069dee30415b776359b7be5\"\u003e\u003ccode\u003e24f5169\u003c/code\u003e\u003c/a\u003e ci: Run diff-shades on unstable instead of preview (\u003ca href=\"https://redirect.github.com/psf/black/issues/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4d55e6017993ee3f0927524e8bc19ead8de9e8ed\"\u003e\u003ccode\u003e4d55e60\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0cf39efdbc3aaea455f95d31e5b42efb6bd61478\"\u003e\u003ccode\u003e0cf39ef\u003c/code\u003e\u003c/a\u003e Improve the performance of get_string_prefix (\u003ca href=\"https://redirect.github.com/psf/black/issues/4742\"\u003e#4742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/1f779dec013db37475fa56a5c9939a09eab7e7d6\"\u003e\u003ccode\u003e1f779de\u003c/code\u003e\u003c/a\u003e Fix line ranges decorator edge case (\u003ca href=\"https://redirect.github.com/psf/black/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/203fd6b5cdad975178b8174394a7f7fb13d14f02\"\u003e\u003ccode\u003e203fd6b\u003c/code\u003e\u003c/a\u003e Optimize Line string method (\u003ca href=\"https://redirect.github.com/psf/black/issues/4739\"\u003e#4739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.1.0...25.9.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.8.2 to 3.9\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.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\u003c/blockquote\u003e\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\u003cp\u003etitle: Changelog\ntoc_depth: 2\u003c/p\u003e\n\u003ch1\u003ePython-Markdown Changelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.1.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to the\n\u003ca href=\"https://packaging.python.org/en/latest/specifications/version-specifiers/\"\u003ePython Version Specification\u003c/a\u003e.\nSee the \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/contributing.md\"\u003eContributing Guide\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003e[Unreleased]\u003c/h2\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 infinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\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\u003c/blockquote\u003e\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/f39cf84a24124526c1a0efbe52219fa9950774f6\"\u003e\u003ccode\u003ef39cf84\u003c/code\u003e\u003c/a\u003e Bump version to 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07bf2076623be5de9952e1f35bfb8c218b699300\"\u003e\u003ccode\u003e07bf207\u003c/code\u003e\u003c/a\u003e Order footnotes by reference\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/23c301de28e12426408656efdfa153b11d4ff558\"\u003e\u003ccode\u003e23c301d\u003c/code\u003e\u003c/a\u003e Fix failing cases for Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/4669a09894d4a35cd5f5d2106b0da95e48d1a3f9\"\u003e\u003ccode\u003e4669a09\u003c/code\u003e\u003c/a\u003e fix typo\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.8.2...3.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.3.9 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.7, 2024-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: incompatibility with the d2 module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/249\"\u003e#249\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.6, 2024-10-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: complete test framework, using pytest and Mkdocs-Test (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/244\"\u003e#244\u003c/a\u003e)\nA number of automated test cases are implemented.\u003c/li\u003e\n\u003cli\u003eChanged: move from setup.py to pyproject.toml (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.2.0, 2024-09-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: three hooks \u003ccode\u003eregister_variables/macros/filters\u003c/code\u003e to facilitate\ncooperation with other MkDocs plugins.\u003c/li\u003e\n\u003cli\u003eFixed: `define_env() was always required in module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/191\"\u003e#191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: trace the case when no module is found (INFO)\u003c/li\u003e\n\u003cli\u003eImproved documentation, particularly about HTML pages\u003c/li\u003e\n\u003cli\u003eAdded: parameters \u003ccode\u003ej2_comment_start_string\u003c/code\u003e and\n\u003ccode\u003ej2_comment_end_string\u003c/code\u003e to plugin's parameters,\nto specify alternate markers for comments.\u003c/li\u003e\n\u003cli\u003eAdded the multiline parameter \u003ccode\u003eforce_render_paths\u003c/code\u003e in the config file,\nto specify directories or file patterns to be rendered for the case when \u003ccode\u003erender_by_default = false\u003c/code\u003e\n(the \u003ccode\u003erender_macros\u003c/code\u003e parameter in the YAML header of the page\nhas the last word).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.5, 2023-10-31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: git.short_tag (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: Mermaid diagrams in the documentation (Readthedocs)\u003c/li\u003e\n\u003cli\u003eFixed: Changelog was no longer displayed (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/186\"\u003e#186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.4, 2023-08-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: Warning due to filter issue with mkdocs \u0026gt;= 1.5\u003c/li\u003e\n\u003cli\u003eFixed: Debug html tables (including for \u003ccode\u003emacro_info()\u003c/code\u003e) are\nnow readable also in dark mode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.2, 2023-07-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: it is now possible to use macros in page titles, in the\nnav section of the yaml file, or in the level 1 titles;\nthe macros are correctly interpreted in the navigation part\nof the page.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.1, 2023-05-25\u003c/h2\u003e\n\u003ch2\u003e1.0.0-alpha, 2023-04-23\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/fralau/mkdocs-macros-plugin/commit/b1dacfb0fba951fc79d36f50895cda3bed3163f6\"\u003e\u003ccode\u003eb1dacfb\u003c/code\u003e\u003c/a\u003e Delete install_package() function from codebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/4ec687e81b6c1b6ac2ad11f1c8cfae671d86bef0\"\u003e\u003ccode\u003e4ec687e\u003c/code\u003e\u003c/a\u003e Remove auto-install of missing pluglet (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/e9dec13e22f12e4fb36bee8065ab90d5e3b90d6e\"\u003e\u003ccode\u003ee9dec13\u003c/code\u003e\u003c/a\u003e Remove installation of missing pluglet (but meaningful  message) \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/9ef2b98d2b6d9971ecd68da3fcc9360d07373c71\"\u003e\u003ccode\u003e9ef2b98\u003c/code\u003e\u003c/a\u003e Include new function \u003ccode\u003eyaml_support()\u003c/code\u003e from super_collections (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.3.9...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.17.1 to 1.18.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.18.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on recursive alias (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19845\"\u003e19845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd additional guidance for stubtest errors when runtime is \u003ccode\u003eobject.__init__\u003c/code\u003e (Stephen Morton, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19733\"\u003e19733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of None values in f-string expressions in mypyc (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/19846\"\u003e19846\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003eAnthony Sottile\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eCharlie Denton\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eCoolCat467\u003c/li\u003e\n\u003cli\u003eDaniel Hnyk\u003c/li\u003e\n\u003cli\u003eEmily\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJahongir Qurbonov\u003c/li\u003e\n\u003cli\u003eJelle Zijlstra\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eOmer Hadari\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003ePrinceNaroliya\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eRobsdedude\u003c/li\u003e\n\u003cli\u003eSaul Shanabrook\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.17\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.17 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features and bug fixes.\nYou can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\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/python/mypy/commit/df05f05555ee62dbdb9960c64cad186172e92be1\"\u003e\u003ccode\u003edf05f05\u003c/code\u003e\u003c/a\u003e remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/01a7a1285d03cb7a330359b22cb462aacb5f9720\"\u003e\u003ccode\u003e01a7a12\u003c/code\u003e\u003c/a\u003e Update changelog for 1.18.2 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19873\"\u003e#19873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ca5abf09f3bfc543ac9c18a364696bc5da20bc03\"\u003e\u003ccode\u003eca5abf0\u003c/code\u003e\u003c/a\u003e Typeshed cherry-pick: Make type of \u003ccode\u003eunitest.mock.Any\u003c/code\u003e a subclass of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python/mypy/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/9d794b57d9c5b03d61caa3286756c05e0ae3021b\"\u003e\u003ccode\u003e9d794b5\u003c/code\u003e\u003c/a\u003e [mypyc] fix: inappropriate \u003ccode\u003eNone\u003c/code\u003es in f-strings (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2c0510c84868b6bb42ef0f305b701e530a85c25f\"\u003e\u003ccode\u003e2c0510c\u003c/code\u003e\u003c/a\u003e stubtest: additional guidance on errors when runtime is object.\u003cstrong\u003einit\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19733\"\u003e#19733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2f3f03c3e39e68dbfa3544c01a34f99803b3e1c2\"\u003e\u003ccode\u003e2f3f03c\u003c/code\u003e\u003c/a\u003e Bump version to 1.18.2+dev for point release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/76698412bc1f3ca99000d52649acd5a0e06aa71d\"\u003e\u003ccode\u003e7669841\u003c/code\u003e\u003c/a\u003e Fix crash on recursive alias in indirection.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19845\"\u003e#19845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/03fbaa941bccc3a9f8aea796d586603b67119bf2\"\u003e\u003ccode\u003e03fbaa9\u003c/code\u003e\u003c/a\u003e bump version to 1.18.1 due to wheels failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b44a1fbf0cf9fd90fd29d6bcd9f64c55dd2fd4c8\"\u003e\u003ccode\u003eb44a1fb\u003c/code\u003e\u003c/a\u003e removed +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7197a99d1aebb1b7a584f82a53c44efb7dddf136\"\u003e\u003ccode\u003e7197a99\u003c/code\u003e\u003c/a\u003e Removed Unreleased in the Changelog for Release 1.18 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.17.1...v1.18.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.8.0.20250809 to 3.9.0.20250906\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.30.2.20250703 to 6.32.1.20250918\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-mock` from 3.14.1 to 3.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-16\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/529\"\u003e#529\u003c/a\u003e: Fixed \u003ccode\u003eitertools._tee object has no attribute error\u003c/code\u003e -- now \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e must be passed to \u003ccode\u003emocker.spy\u003c/code\u003e to duplicate iterators.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-04\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 (EOL) is no longer supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/524\"\u003e#524\u003c/a\u003e: Added \u003ccode\u003espy_return_iter\u003c/code\u003e to \u003ccode\u003emocker.spy\u003c/code\u003e, which contains a duplicate of the return value of the spied method if it is an \u003ccode\u003eIterator\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-16\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#529](https://github.com/pytest-dev/pytest-mock/issues/529) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/529\u0026gt;\u003c/code\u003e_: Fixed \u003ccode\u003eitertools._tee object has no attribute error\u003c/code\u003e -- now \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e must be passed to \u003ccode\u003emocker.spy\u003c/code\u003e to duplicate iterators.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-09-04\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 (EOL) is no longer supported.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#524](https://github.com/pytest-dev/pytest-mock/issues/524) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/524\u0026gt;\u003c/code\u003e_: Added \u003ccode\u003espy_return_iter\u003c/code\u003e to \u003ccode\u003emocker.spy\u003c/code\u003e, which contains a duplicate of the return value of the spied method if it is an \u003ccode\u003eIterator\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/pytest-dev/pytest-mock/commit/e1b5c62a38c5a05cae614aef3847f240ba50d269\"\u003e\u003ccode\u003ee1b5c62\u003c/code\u003e\u003c/a\u003e Release 3.15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/184eb190d6be417f5f33727bcbc9704909479498\"\u003e\u003ccode\u003e184eb19\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003espy_return_iter\u003c/code\u003e only when explicitly requested (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/4fa0088a0aa85eefb1313bd97adf43889bf1f647\"\u003e\u003ccode\u003e4fa0088\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f5aff33ce71ed4620acc43dc41cb3b198bcf4cb0\"\u003e\u003ccode\u003ef5aff33\u003c/code\u003e\u003c/a\u003e Fix test failure with pytest 8+ and verbose mode (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/adc41873c9d6aa69b87e3f108c93a29c847869aa\"\u003e\u003ccode\u003eadc4187\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/533\"\u003e#533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/95ad5700609aae73c6f767b8cc2ccfb2483e0f5c\"\u003e\u003ccode\u003e95ad570\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/e696bf02c199b1f7d0c48adb450f40e5a75b699a\"\u003e\u003ccode\u003ee696bf0\u003c/code\u003e\u003c/a\u003e Fix standalone mock support (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/5b29b03ce9581cfcd867dd6c04a970fb2c861291\"\u003e\u003ccode\u003e5b29b03\u003c/code\u003e\u003c/a\u003e Fix gen-release-notes script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/7d22ef4e560351832e60687d8bd15ebe2785ff3b\"\u003e\u003ccode\u003e7d22ef4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/528\"\u003e#528\u003c/a\u003e from pytest-dev/release-3.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/90b29f89e2086c139a7b4fea89202faa192ee5a9\"\u003e\u003ccode\u003e90b29f8\u003c/code\u003e\u003c/a\u003e Update CHANGELOG for 3.15.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.14.1...v3.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `time-machine` from 2.16.0 to 2.19.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.136.8 to 6.140.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.140.2\u003c/h2\u003e\n\u003cp\u003eThe automatic switch to the CI \u0026quot;settings profile\u0026quot; now works under tox\n(for \u0026quot;tox \u0026gt;= 4.30.0\u0026quot;).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-140-2\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.140.1\u003c/h2\u003e\n\u003cp\u003eThis patch re-enables the warning for incompatible \u0026quot;shared()\u0026quot;\nstrategies that was first enabled in v6.133.0 but disabled in\nv6.135.15.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-140-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.140.0\u003c/h2\u003e\n\u003cp\u003e\u0026quot;characters()\u0026quot; now validates that the elements of the\n\u0026quot;exclude_characters\u0026quot; and \u0026quot;include_characters\u0026quot; arguments are single\ncharacters, which was always assumed internally. For example,\n\u0026quot;exclude_characters=[\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;]\u0026quot; is valid while\n\u0026quot;exclude_characters=[\u0026quot;ab\u0026quot;]\u0026quot; will now raise an error up-front.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-140-0\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.139.3\u003c/h2\u003e\n\u003cp\u003eAdd \u0026quot;phase\u0026quot; to the hypothesis-specific metadata in observability.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-139-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.139.2\u003c/h2\u003e\n\u003cp\u003eInternal refactoring for new lint rules.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-139-2\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.139.1\u003c/h2\u003e\n\u003cp\u003eFixed another typo in error message around function-scoped fixtures.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-139-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.139.0\u003c/h2\u003e\n\u003cp\u003eAdd \u0026quot;get_current_profile_name()\u0026quot;, which returns the name of the\ncurrent settings profile.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-139-0\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.138.17\u003c/h2\u003e\n\u003cp\u003eFixed typo in error message around function-scoped fixtures.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-138-17\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.138.16\u003c/h2\u003e\n\u003cp\u003eImproved error message for \u0026quot;DeadlineExceeded\u0026quot;.\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/HypothesisWorks/hypothesis/commit/275d4964d1df8f3bcac5eef96c36407d15824b56\"\u003e\u003ccode\u003e275d496\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.140.2 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3b95a47cf9b9c60ff991e7d4e9166d27db3cc09b\"\u003e\u003ccode\u003e3b95a47\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4553\"\u003e#4553\u003c/a\u003e from Liam-DeVoe/tox-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/549d8cda6eb4a72912791326c05932fd6d229e71\"\u003e\u003ccode\u003e549d8cd\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.140.1 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b3146b02162ea8d169dc13d4a5f0aef070aee440\"\u003e\u003ccode\u003eb3146b0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4509\"\u003e#4509\u003c/a\u003e from jobh/fix_shared_strategy_warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/af304d95e662cfb79bd48b23f6ef13dc4ea85fbc\"\u003e\u003ccode\u003eaf304d9\u003c/code\u003e\u003c/a\u003e Remove a redundant hash in calc_label\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/43a65dc74de98efc4d6ff3898efdf0690d487e5e\"\u003e\u003ccode\u003e43a65dc\u003c/code\u003e\u003c/a\u003e Revert changes to integers/floats label calculation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/f1e78f75bc3161d62c05bad9985da969e44797d2\"\u003e\u003ccode\u003ef1e78f7\u003c/code\u003e\u003c/a\u003e Add test for coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c5fa0d4506608725abcb001f6242a39c5be4a83e\"\u003e\u003ccode\u003ec5fa0d4\u003c/code\u003e\u003c/a\u003e formatting, lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b5dc8ff4949d7fa19076f532974eaa9a59b3873d\"\u003e\u003ccode\u003eb5dc8ff\u003c/code\u003e\u003c/a\u003e Update a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7cb9389f53fdc59f2638772894b7896e4e057204\"\u003e\u003ccode\u003e7cb9389\u003c/code\u003e\u003c/a\u003e lint and flatmap\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.136.8...hypothesis-python-6.140.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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\n\n\n\u003c/details\u003e","html_url":"https://github.com/frequenz-floss/frequenz-client-dispatch-python/pull/216","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Ffrequenz-client-dispatch-python/issues/216","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/216/packages"}},{"old_version":"2.14.1","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-10-01T11:01:12.000Z","version_change":"2.14.1 → 2.19.0","issue":{"uuid":"2877780013","node_id":"PR_kwDOAWUeYM6rh3At","number":4304,"state":"open","title":"Bump time-machine from 2.14.1 to 2.19.0","user":"dependabot[bot]","labels":["dependencies","python","Minor"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-01T11:01:12.000Z","updated_at":"2025-10-01T11:01:13.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"2.14.1","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.14.1 to 2.19.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.14.1...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=2.14.1\u0026new-version=2.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/alephdata/aleph/pull/4304","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alephdata%2Faleph/issues/4304","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4304/packages"}},{"old_version":"2.5.0","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-09-30T05:13:30.000Z","version_change":"2.5.0 → 2.19.0","issue":{"uuid":"2872929337","node_id":"PR_kwDOFHeJu86rPWw5","number":9,"state":"open","title":"Bump time-machine from 2.5.0 to 2.19.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-09-30T05:13:30.000Z","updated_at":"2025-09-30T05:13:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"time-machine","old_version":"2.5.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.5.0 to 2.19.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.5.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=2.5.0\u0026new-version=2.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Jeecabs/freqtrade-extra/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jeecabs%2Ffreqtrade-extra/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"}},{"old_version":"2.16.0","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-09-29T17:01:11.000Z","version_change":"2.16.0 → 2.19.0","issue":{"uuid":"3465846147","node_id":"PR_kwDOOYeBPM6rJdNv","number":38,"state":"open","title":"chore(deps): bump the runtime-dependencies group across 1 directory with 32 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-29T17:01:11.000Z","updated_at":"2025-09-29T17:01:12.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"runtime-dependencies","update_count":32,"packages":[{"name":"alembic","old_version":"1.15.2","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pip","old_version":"25.0.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.15"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.3.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"structlog","old_version":"25.2.0","new_version":"25.4.0","repository_url":"https://github.com/hynek/structlog"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.34.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"azure-storage-blob","old_version":"12.25.1","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-core","old_version":"1.33.0","new_version":"1.35.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.21.0","new_version":"1.25.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"pymssql","old_version":"2.3.4","new_version":"2.3.7","repository_url":"https://github.com/pymssql/pymssql"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.13","repository_url":"https://github.com/getmoto/moto"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-docker","old_version":"3.2.1","new_version":"3.2.3","repository_url":"https://github.com/avast/pytest-docker"},{"name":"pytest-structlog","old_version":"1.1","new_version":"1.2","repository_url":"https://github.com/wimglenn/pytest-structlog"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"setproctitle","old_version":"1.3.5","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"types-dateparser","old_version":"1.2.0.20250208","new_version":"1.2.2.20250809","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-jsonschema","old_version":"4.23.0.20241208","new_version":"4.25.1.20250822","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-dependencies group with 32 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.15.2` | `1.16.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [pip](https://github.com/pypa/pip) | `25.0.1` | `25.2` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.18.15` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [structlog](https://github.com/hynek/structlog) | `25.2.0` | `25.4.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.34.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.25.1` | `12.26.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.33.0` | `1.35.1` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.21.0` | `1.25.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.3.4` | `2.3.7` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.13` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-docker](https://github.com/avast/pytest-docker) | `3.2.1` | `3.2.3` |\n| [pytest-structlog](https://github.com/wimglenn/pytest-structlog) | `1.1` | `1.2` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.5` | `1.3.7` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [types-dateparser](https://github.com/typeshed-internal/stub_uploader) | `1.2.0.20250208` | `1.2.2.20250809` |\n| [types-jsonschema](https://github.com/typeshed-internal/stub_uploader) | `4.23.0.20241208` | `4.25.1.20250822` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20250913` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n\n\nUpdates `alembic` from 1.15.2 to 1.16.5\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.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.4\u003c/h1\u003e\n\u003cp\u003eReleased: July 10, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue in new \u003ccode\u003epyproject.toml\u003c/code\u003e support where boolean values, such as\nthose used for the \u003ccode\u003erecursive_version_locations\u003c/code\u003e and \u003ccode\u003esourceless\u003c/code\u003e\nconfiguration parameters, would not be accepted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1694\"\u003e#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.3\u003c/h1\u003e\n\u003cp\u003eReleased: July 8, 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 new \u003ccode\u003epyproject_async\u003c/code\u003e template, combining the new \u003ccode\u003epyproject\u003c/code\u003e\ntemplate with the \u003ccode\u003easync\u003c/code\u003e template.  Pull request courtesy Alc-Alc.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1683\"\u003e#1683\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Add \u0026quot;module\u0026quot; post-write hook. This hook type is almost identical to the\nconsole_scripts hook, except it's running \u003ccode\u003epython -m black\u003c/code\u003e instead of\nusing black's \u003ccode\u003econsole_script\u003c/code\u003e. It is mainly useful for tools without\nconsole scripts (e.g. ruff), but has semantics closer to the\nconsole_scripts hook in that it finds the ruff module available to the\nrunning interpreter instead of finding an executable by path. Pull request\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\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 `anyio` from 4.9.0 to 4.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.25.1\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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra by \u003ca href=\"https://github.com/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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.24.1...v4.25.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.1...v4.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUnambiguously quote and escape properties in JSON path rendering by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop python\u0026lt;3.9 backports by \u003ca href=\"https://github.com/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\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/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\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.24.0...v4.24.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.0...v4.24.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculation of evaluated properties by \u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#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\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bkueng\"\u003e\u003ccode\u003e@​bkueng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1326\"\u003epython-jsonschema/jsonschema#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#1351\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.23.0...v4.24.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.24.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/331c38425519b69118d22ebe467ad230fb83a010\"\u003e\u003ccode\u003e331c384\u003c/code\u003e\u003c/a\u003e Add the fix to the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/c1ec0a645e913e83de95995f6efbbd358676abf6\"\u003e\u003ccode\u003ec1ec0a6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1398\"\u003e#1398\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/8e7d594faff13f8f663b306a0d86bea0ce5de6cb\"\u003e\u003ccode\u003e8e7d594\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1399\"\u003e#1399\u003c/a\u003e from python-jsonschema/dependabot/github_actions/act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/460f4fae42664773160f56ccc843a4fcea34f7cf\"\u003e\u003ccode\u003e460f4fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e from sirosen/improve-protocol-init-signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1e58409b71a9696b7bf9938ae8a3a48ef95ab29e\"\u003e\u003ccode\u003e1e58409\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/64bc2171624ef201bdbf35e47780348ce30935c5\"\u003e\u003ccode\u003e64bc217\u003c/code\u003e\u003c/a\u003e Add a typing test for the Validator protocol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6c25741bff889477680f9b0d1aa967ae35c38f43\"\u003e\u003ccode\u003e6c25741\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/bf603d59117f840916709fc87c6625df43d1fe72\"\u003e\u003ccode\u003ebf603d5\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6.4.3 to 6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a916d8f8253baa11bacc60f0868f0bab1e42d526\"\u003e\u003ccode\u003ea916d8f\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/de60f18bd97395a52a11b561eb62963e0ffe9e71\"\u003e\u003ccode\u003ede60f18\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1397\"\u003e#1397\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 25.0.1 to 25.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e25.2 (2025-07-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ccode\u003e[#13506](https://github.com/pypa/pip/issues/13506) \u0026lt;https://github.com/pypa/pip/issues/13506\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAutomatic download resumption and retrying is enabled by default. (\u003ccode\u003e[#13464](https://github.com/pypa/pip/issues/13464) \u0026lt;https://github.com/pypa/pip/issues/13464\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRequires-Python error message displays version clauses in numerical order. (\u003ccode\u003e[#13367](https://github.com/pypa/pip/issues/13367) \u0026lt;https://github.com/pypa/pip/issues/13367\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement getting the order to install a very large number of interdependent packages. (\u003ccode\u003e[#13424](https://github.com/pypa/pip/issues/13424) \u0026lt;https://github.com/pypa/pip/issues/13424\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow time taken instead of \u003ccode\u003eeta 0:00:00\u003c/code\u003e at download completion. (\u003ccode\u003e[#13483](https://github.com/pypa/pip/issues/13483) \u0026lt;https://github.com/pypa/pip/issues/13483\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eSpeed up small CLI tools by removing \u003ccode\u003eimport re\u003c/code\u003e from the console\nscript executable template. (\u003ccode\u003e[#13165](https://github.com/pypa/pip/issues/13165) \u0026lt;https://github.com/pypa/pip/issues/13165\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove warning when cloning from a Git reference that does not look like a commit hash. (\u003ccode\u003e[#12283](https://github.com/pypa/pip/issues/12283) \u0026lt;https://github.com/pypa/pip/issues/12283\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip config debug\u003c/code\u003e now correctly separates options as set by the different files\nat the same level. (\u003ccode\u003e[#12099](https://github.com/pypa/pip/issues/12099) \u0026lt;https://github.com/pypa/pip/issues/12099\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnsure truststore feature remains active even when a proxy is also in use. (\u003ccode\u003e[#13343](https://github.com/pypa/pip/issues/13343) \u0026lt;https://github.com/pypa/pip/issues/13343\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude sub-commands in tab completion. (\u003ccode\u003e[#13140](https://github.com/pypa/pip/issues/13140) \u0026lt;https://github.com/pypa/pip/issues/13140\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip list\u003c/code\u003e with the \u003ccode\u003ejson\u003c/code\u003e or \u003ccode\u003efreeze\u003c/code\u003e format enabled will no longer\ncrash when encountering a package with an invalid version. (\u003ccode\u003e[#13345](https://github.com/pypa/pip/issues/13345) \u0026lt;https://github.com/pypa/pip/issues/13345\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a hint if a system error is raised involving long filenames or path segments on Windows. (\u003ccode\u003e[#13346](https://github.com/pypa/pip/issues/13346) \u0026lt;https://github.com/pypa/pip/issues/13346\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResumed downloads are saved to the HTTP cache like any other normal download. (\u003ccode\u003e[#13441](https://github.com/pypa/pip/issues/13441) \u0026lt;https://github.com/pypa/pip/issues/13441\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfigured verbosity is consistently forwarded while calling Git during\nVCS operations. (\u003ccode\u003e[#13329](https://github.com/pypa/pip/issues/13329) \u0026lt;https://github.com/pypa/pip/issues/13329\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress the progress bar, when running with \u003ccode\u003e--log\u003c/code\u003e and \u003ccode\u003e--quiet\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eConsequently, a new \u003ccode\u003eauto\u003c/code\u003e mode for \u003ccode\u003e--progress-bar\u003c/code\u003e has been added.\n\u003ccode\u003eauto\u003c/code\u003e will enable progress bars unless suppressed by \u003ccode\u003e--quiet\u003c/code\u003e,\nwhile \u003ccode\u003eon\u003c/code\u003e will always enable progress bars. (\u003ccode\u003e[#10915](https://github.com/pypa/pip/issues/10915) \u0026lt;https://github.com/pypa/pip/issues/10915\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local URLs with non-\u003ccode\u003efile\u003c/code\u003e schemes. (\u003ccode\u003e[#13509](https://github.com/pypa/pip/issues/13509) \u0026lt;https://github.com/pypa/pip/issues/13509\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local file URLs on Windows in newer Python versions. (\u003ccode\u003e[#13510](https://github.com/pypa/pip/issues/13510) \u0026lt;https://github.com/pypa/pip/issues/13510\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix remaining test failures in Python 3.14 by adjusting \u003ccode\u003epath_to_url\u003c/code\u003e and similar functions. (\u003ccode\u003e[#13423](https://github.com/pypa/pip/issues/13423) \u0026lt;https://github.com/pypa/pip/issues/13423\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing \u003ccode\u003enetwork\u003c/code\u003e test markings, making the suite pass in offline\nenvironments again. (\u003ccode\u003e[#13378](https://github.com/pypa/pip/issues/13378) \u0026lt;https://github.com/pypa/pip/issues/13378\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CacheControl to 0.14.3\u003c/li\u003e\n\u003cli\u003eUpgrade certifi to 2025.7.14\u003c/li\u003e\n\u003cli\u003eUpgrade distlib to 0.4.0\u003c/li\u003e\n\u003cli\u003eUpgrade msgpack to 1.1.1\u003c/li\u003e\n\u003cli\u003eUpgrade platformdirs to 4.3.8\u003c/li\u003e\n\u003cli\u003eUpgrade pygments to 2.19.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.32.4\u003c/li\u003e\n\u003cli\u003eUpgrade resolvelib to 1.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/pip/commit/2e05cae3da2cfafa6dce58167a25b7dba4bc2a33\"\u003e\u003ccode\u003e2e05cae\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/f24906109c84ca51eef57a4f925298d38ff31df3\"\u003e\u003ccode\u003ef249061\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/78d15a5da09c6fbc5c2cd88fb5bd67bfd7fb0637\"\u003e\u003ccode\u003e78d15a5\u003c/code\u003e\u003c/a\u003e Copyedit news entries before 25.2 (again)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4fe68d78ae8b117ad413ec61c518dd600af08bf0\"\u003e\u003ccode\u003e4fe68d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13506\"\u003e#13506\u003c/a\u003e from ichard26/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/775a86f2bac8894771911ab068b18f09550cb6f0\"\u003e\u003ccode\u003e775a86f\u003c/code\u003e\u003c/a\u003e Fix broken unit tests \u0026amp; xfail weird failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2773b13baa59ec68b03df9f0f73e4e3c21fcd958\"\u003e\u003ccode\u003e2773b13\u003c/code\u003e\u003c/a\u003e Reformat and add --allow-unix-socket to pytest config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e384d1032c189312ac21f23844c9c6f1f4750eb1\"\u003e\u003ccode\u003ee384d10\u003c/code\u003e\u003c/a\u003e Declare Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4117dc7c6b606d825904ffbe35d51012923374f4\"\u003e\u003ccode\u003e4117dc7\u003c/code\u003e\u003c/a\u003e Always remove authority section when cleaning local URL path (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13510\"\u003e#13510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2e21934b5c35a0e6b41fd586399cd36ed304c03c\"\u003e\u003ccode\u003e2e21934\u003c/code\u003e\u003c/a\u003e Fix cleaning of local URLs with VCS schemes (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13509\"\u003e#13509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/853a593191d7205b837d32a72e0eb7e7b81e1821\"\u003e\u003ccode\u003e853a593\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003epath_to_url()\u003c/code\u003e tests (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13496\"\u003e#13496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/25.0.1...25.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/HISTORY.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.1.0\u003c/h1\u003e\n\u003cp\u003e2025-09-17\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2581_, [Windows]: publish ARM64 wheels.  (patch by Matthieu Darbois)\u003c/li\u003e\n\u003cli\u003e2571_, [FreeBSD]: Dropped support for FreeBSD 8 and earlier. FreeBSD 8 was\nmaintained from 2009 to 2013.\u003c/li\u003e\n\u003cli\u003e2575_: introduced \u003ccode\u003edprint\u003c/code\u003e CLI tool to format .yml and .md files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2473_, [macOS]: Fix build issue on macOS 11 and lower.\u003c/li\u003e\n\u003cli\u003e2494_, [Windows]: All APIs dealing with paths, such as\n\u003ccode\u003eProcess.memory_maps()\u003c/code\u003e\u003cem\u003e, \u003ccode\u003eProcess.exe()\u003c/code\u003e\u003c/em\u003e and \u003ccode\u003eProcess.open_files()\u003c/code\u003e_ does\nnot properly handle UNC paths. Paths such as \u003ccode\u003e\\\\??\\\\C:\\\\Windows\\\\Temp\u003c/code\u003e and\n\u003ccode\u003e'\\\\Device\\\\HarddiskVolume1\\\\Windows\\\\Temp'\u003c/code\u003e are now converted to\n\u003ccode\u003eC:\\\\Windows\\\\Temp\u003c/code\u003e.  (patch by Ben Peddell)\u003c/li\u003e\n\u003cli\u003e2506_, [Windows]: Windows service APIs had issues with unicode services using\nspecial characters in their name.\u003c/li\u003e\n\u003cli\u003e2514_, [Linux]: \u003ccode\u003eProcess.cwd()\u003c/code\u003e_ sometimes fail with \u003ccode\u003eFileNotFoundError\u003c/code\u003e due\nto a race condition.\u003c/li\u003e\n\u003cli\u003e2526_, [Linux]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e\u003cem\u003e, which is used to univocally\nidentify a process over time, is subject to system clock updates, and as such\ncan lead to \u003ccode\u003eProcess.is_running()\u003c/code\u003e\u003c/em\u003e returning a wrong result. A monotonic\ncreation time is now used instead.  (patch by Jonathan Kohler)\u003c/li\u003e\n\u003cli\u003e2528_, [Linux]: \u003ccode\u003eProcess.children()\u003c/code\u003e_ may raise \u003ccode\u003ePermissionError\u003c/code\u003e. It will\nnow raise \u003ccode\u003eAccessDenied\u003c/code\u003e_ instead.\u003c/li\u003e\n\u003cli\u003e2540_, [macOS]: \u003ccode\u003eboot_time()\u003c/code\u003e_ is off by 45 seconds (C precision issue).\u003c/li\u003e\n\u003cli\u003e2541_, 2570_, 2578_ [Linux], [macOS], [NetBSD]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e_ does\nnot reflect system clock updates.\u003c/li\u003e\n\u003cli\u003e2542_: if system clock is updated \u003ccode\u003eProcess.children()\u003c/code\u003e_ and\n\u003ccode\u003eProcess.parent()\u003c/code\u003e_ may not be able to return the right information.\u003c/li\u003e\n\u003cli\u003e2545_: [Illumos]: Fix handling of MIB2_UDP_ENTRY in \u003ccode\u003enet_connections()\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003e2552_, [Windows]: \u003ccode\u003eboot_time()\u003c/code\u003e_ didn't take into account the time spent\nduring suspend / hibernation.\u003c/li\u003e\n\u003cli\u003e2560_, [Linux]: \u003ccode\u003eProcess.memory_maps()\u003c/code\u003e_ may crash with \u003ccode\u003eIndexError\u003c/code\u003e on\nRISCV64 due to a malformed \u003ccode\u003e/proc/{PID}/smaps\u003c/code\u003e file.  (patch by Julien\nStephan)\u003c/li\u003e\n\u003cli\u003e2586_, [macOS], [CRITICAL]: fixed different places in C code which can\ntrigger a segfault.\u003c/li\u003e\n\u003cli\u003e2604_, [Linux]: \u003ccode\u003evirtual_memory()\u003c/code\u003e_ \u0026quot;used\u0026quot; memory does not match recent\nversions of \u003ccode\u003efree\u003c/code\u003e CLI utility.  (patch by Isaac K. Ko)\u003c/li\u003e\n\u003cli\u003e2605_, [Linux]: \u003ccode\u003epsutil.sensors_battery()\u003c/code\u003e reports a negative amount for\nseconds left.\u003c/li\u003e\n\u003cli\u003e2607_, [Windows]: \u003ccode\u003eWindowsService.description()\u003c/code\u003e method may fail with\n\u003ccode\u003eERROR_NOT_FOUND\u003c/code\u003e. Now it returns an empty string instead.\u003c/li\u003e\n\u003cli\u003e2610:, [macOS], [CRITICAL]: fix \u003ccode\u003ecpu_freq()\u003c/code\u003e_ segfault on ARM architectures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/0d18187e79b349e577fadabd3589f8fdbf99bf5a\"\u003e\u003ccode\u003e0d18187\u003c/code\u003e\u003c/a\u003e Revert HISTORY notes about \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e. We still do publish 3.6 and 3.7 wheels.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/229e2de232860fe22e2c2884c20b8979c643d5c6\"\u003e\u003ccode\u003e229e2de\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/fb75b28226ec8e6b9e5b9eefa05a62de579cc114\"\u003e\u003ccode\u003efb75b28\u003c/code\u003e\u003c/a\u003e Chore: skip CI tests except on Python 3.8 and 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/3a4c01638bc61c77f43a05aea5bc6e1ddc81c6c4\"\u003e\u003ccode\u003e3a4c016\u003c/code\u003e\u003c/a\u003e Stop publishing wheels for Python 3.6 and 3.7 (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/83e4f7fdd76051dd8e0eeed99e2bf5fc881a2960\"\u003e\u003ccode\u003e83e4f7f\u003c/code\u003e\u003c/a\u003e OSX: disable failing test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/df0d4e2637917377bd5971f1745e881b75f2c6e2\"\u003e\u003ccode\u003edf0d4e2\u003c/code\u003e\u003c/a\u003e Call GetExtended[Tcp|Udp]Table twice under free-threaded build (round 2) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2627\"\u003e#2627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/dcbfb81e863fa2b8688ccd8da27b09b539404688\"\u003e\u003ccode\u003edcbfb81\u003c/code\u003e\u003c/a\u003e [Windows] fix unicode issues around service APIs (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2626\"\u003e#2626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ef72dcd076f1cec94ba50ec30b5dbebb272845d0\"\u003e\u003ccode\u003eef72dcd\u003c/code\u003e\u003c/a\u003e revert \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2590\"\u003e#2590\u003c/a\u003e (Call GetExtended[Tcp|Udp]Table twice under free-threaded build)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8773698006d387db90b3982d78fd4ff6b2ebe71c\"\u003e\u003ccode\u003e8773698\u003c/code\u003e\u003c/a\u003e small refact around UTXENT_MUTEX_LOCK\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/13b711fc3ffa384d481e03881e46ae48009c4eeb\"\u003e\u003ccode\u003e13b711f\u003c/code\u003e\u003c/a\u003e Lock around uses of getutent/setutent/endutent (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2615\"\u003e#2615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/release-7.0.0...release-7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\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/theskumar/python-dotenv/commit/16e660d384b942b11879b44500afbbe021650448\"\u003e\u003ccode\u003e16e660d\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.0 → 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/667e82f18d6e5306894c8746c46b1da2d031bd23\"\u003e\u003ccode\u003e667e82f\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/9d85edb3b8652de4601f9ad8a7a49ad9909f898a\"\u003e\u003ccode\u003e9d85edb\u003c/code\u003e\u003c/a\u003e fix(cli): issue with execvpe on Windows (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8411987b9301f716245074872afa30646e9b9eb7\"\u003e\u003ccode\u003e8411987\u003c/code\u003e\u003c/a\u003e fix: ensure find_dotenv work reliably on python 3.13 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/01f899733de664cda0550207067eb36a1795062f\"\u003e\u003ccode\u003e01f8997\u003c/code\u003e\u003c/a\u003e docs update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.2 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\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 `ruamel-yaml` from 0.18.10 to 0.18.15\n\nUpdates `smart-open` from 7.1.0 to 7.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/releases\"\u003esmart-open's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003episkvorky/smart_open#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003episkvorky/smart_open#877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003episkvorky/smart_open#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003episkvorky/smart_open#875\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0.post1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003episkvorky/smart_open#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI badge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003episkvorky/smart_open#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003episkvorky/smart_open#871\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nThis version was yanked from PyPI because \u003ccode\u003epyproject.toml\u003c/code\u003e falsely claimed that python 3.7 was still supported.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003episkvorky/smart_open#857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003episkvorky/smart_open#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003episkvorky/smart_open#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003episkvorky/smart_open#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003episkvorky/smart_open#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003episkvorky/smart_open#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eModernize python packaging by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003episkvorky/smart_open#851\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.2.0\u003c/h2\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/blob/develop/CHANGELOG.md\"\u003esmart-open's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.3.1, 2025-09-08\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003e#877\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003e#878\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003e#875\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0.post1, 2025-07-03\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003e#868\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003e#867\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix CI badge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003e#869\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0, 2025-07-01\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003e#857\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003e#853\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003e#861\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003e#864\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003e#854\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernize python packaging (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003e#851\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/c17ae23c1cda0ba84d72ae12dc38442a57bd69e0\"\u003e\u003ccode\u003ec17ae23\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/b54438fb7d624cac8cde33feaea5ba22017d0d7e\"\u003e\u003ccode\u003eb54438f\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/676099ecc7889b3def7981ac56f888d8fcbb4a9b\"\u003e\u003ccode\u003e676099e\u003c/code\u003e\u003c/a\u003e Add .xz and increase performance of compression module (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/35843b97205a0fedec42bd3d3fa6d1afba6158e1\"\u003e\u003ccode\u003e35843b9\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5fefc681d16d0cbdb6a750d3209530a7ef549b98\"\u003e\u003ccode\u003e5fefc68\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/877\"\u003e#877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/414e2c45d0cbf49c38c677ce4b468e537386a4b0\"\u003e\u003ccode\u003e414e2c4\u003c/code\u003e\u003c/a\u003e Fix release.sh for the final merge back into develop (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/872\"\u003e#872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5313e526440b4ad53dd8850a3e53db9f35dc6fab\"\u003e\u003ccode\u003e5313e52\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/baed6541f6fdc1e48cf40cff5ca038bfa5db4543\"\u003e\u003ccode\u003ebaed654\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/aed8895e2b7463d624e36c98ef5585d243e7612d\"\u003e\u003ccode\u003eaed8895\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/69751d5405d7be4f57885ceba8811dcfa8ebea62\"\u003e\u003ccode\u003e69751d5\u003c/code\u003e\u003c/a\u003e Drop 3.7 support in pyproject.toml (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/871\"\u003e#871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.1.0...v7.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003csum...\n\n_Description has been truncated_","html_url":"https://github.com/markhallen/dependabot-test-meltano/pull/38","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/markhallen%2Fdependabot-test-meltano/issues/38","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/38/packages"}},{"old_version":"2.16.0","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-09-22T12:34:20.000Z","version_change":"2.16.0 → 2.19.0","issue":{"uuid":"2849315441","node_id":"PR_kwDOOYeBPM6p1Rpx","number":37,"state":"closed","title":"chore(deps): bump the runtime-dependencies group across 1 directory with 31 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2025-09-29T13:37:34.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-22T12:34:20.000Z","updated_at":"2025-09-29T13:37:34.000Z","time_to_close":608594,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"runtime-dependencies","update_count":31,"packages":[{"name":"alembic","old_version":"1.15.2","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pip","old_version":"25.0.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.15"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.3.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"structlog","old_version":"25.2.0","new_version":"25.4.0","repository_url":"https://github.com/hynek/structlog"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.34.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"azure-storage-blob","old_version":"12.25.1","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-core","old_version":"1.33.0","new_version":"1.35.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.21.0","new_version":"1.25.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"pymssql","old_version":"2.3.4","new_version":"2.3.7","repository_url":"https://github.com/pymssql/pymssql"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.13","repository_url":"https://github.com/getmoto/moto"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-docker","old_version":"3.2.1","new_version":"3.2.3","repository_url":"https://github.com/avast/pytest-docker"},{"name":"pytest-structlog","old_version":"1.1","new_version":"1.2","repository_url":"https://github.com/wimglenn/pytest-structlog"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"setproctitle","old_version":"1.3.5","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"types-dateparser","old_version":"1.2.0.20250208","new_version":"1.2.2.20250809","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-jsonschema","old_version":"4.23.0.20241208","new_version":"4.25.1.20250822","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-dependencies group with 31 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.15.2` | `1.16.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [pip](https://github.com/pypa/pip) | `25.0.1` | `25.2` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.18.15` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [structlog](https://github.com/hynek/structlog) | `25.2.0` | `25.4.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.34.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.25.1` | `12.26.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.33.0` | `1.35.1` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.21.0` | `1.25.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.3.4` | `2.3.7` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.13` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-docker](https://github.com/avast/pytest-docker) | `3.2.1` | `3.2.3` |\n| [pytest-structlog](https://github.com/wimglenn/pytest-structlog) | `1.1` | `1.2` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.5` | `1.3.7` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [types-dateparser](https://github.com/typeshed-internal/stub_uploader) | `1.2.0.20250208` | `1.2.2.20250809` |\n| [types-jsonschema](https://github.com/typeshed-internal/stub_uploader) | `4.23.0.20241208` | `4.25.1.20250822` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20250913` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n\n\nUpdates `alembic` from 1.15.2 to 1.16.5\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.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.4\u003c/h1\u003e\n\u003cp\u003eReleased: July 10, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue in new \u003ccode\u003epyproject.toml\u003c/code\u003e support where boolean values, such as\nthose used for the \u003ccode\u003erecursive_version_locations\u003c/code\u003e and \u003ccode\u003esourceless\u003c/code\u003e\nconfiguration parameters, would not be accepted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1694\"\u003e#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.3\u003c/h1\u003e\n\u003cp\u003eReleased: July 8, 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 new \u003ccode\u003epyproject_async\u003c/code\u003e template, combining the new \u003ccode\u003epyproject\u003c/code\u003e\ntemplate with the \u003ccode\u003easync\u003c/code\u003e template.  Pull request courtesy Alc-Alc.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1683\"\u003e#1683\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Add \u0026quot;module\u0026quot; post-write hook. This hook type is almost identical to the\nconsole_scripts hook, except it's running \u003ccode\u003epython -m black\u003c/code\u003e instead of\nusing black's \u003ccode\u003econsole_script\u003c/code\u003e. It is mainly useful for tools without\nconsole scripts (e.g. ruff), but has semantics closer to the\nconsole_scripts hook in that it finds the ruff module available to the\nrunning interpreter instead of finding an executable by path. Pull request\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\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 `anyio` from 4.9.0 to 4.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded 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\n(\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\nkeyword argument\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/27abc2c47526feca2c1ba29a2f48d65f4281c6c2\"\u003e\u003ccode\u003e27abc2c\u003c/code\u003e\u003c/a\u003e Bumped up the version, second attempt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.25.1\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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra by \u003ca href=\"https://github.com/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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.24.1...v4.25.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.1...v4.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUnambiguously quote and escape properties in JSON path rendering by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop python\u0026lt;3.9 backports by \u003ca href=\"https://github.com/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\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/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\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.24.0...v4.24.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.0...v4.24.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculation of evaluated properties by \u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#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\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bkueng\"\u003e\u003ccode\u003e@​bkueng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1326\"\u003epython-jsonschema/jsonschema#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#1351\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.23.0...v4.24.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.24.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/331c38425519b69118d22ebe467ad230fb83a010\"\u003e\u003ccode\u003e331c384\u003c/code\u003e\u003c/a\u003e Add the fix to the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/c1ec0a645e913e83de95995f6efbbd358676abf6\"\u003e\u003ccode\u003ec1ec0a6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1398\"\u003e#1398\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/8e7d594faff13f8f663b306a0d86bea0ce5de6cb\"\u003e\u003ccode\u003e8e7d594\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1399\"\u003e#1399\u003c/a\u003e from python-jsonschema/dependabot/github_actions/act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/460f4fae42664773160f56ccc843a4fcea34f7cf\"\u003e\u003ccode\u003e460f4fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e from sirosen/improve-protocol-init-signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1e58409b71a9696b7bf9938ae8a3a48ef95ab29e\"\u003e\u003ccode\u003e1e58409\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/64bc2171624ef201bdbf35e47780348ce30935c5\"\u003e\u003ccode\u003e64bc217\u003c/code\u003e\u003c/a\u003e Add a typing test for the Validator protocol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6c25741bff889477680f9b0d1aa967ae35c38f43\"\u003e\u003ccode\u003e6c25741\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/bf603d59117f840916709fc87c6625df43d1fe72\"\u003e\u003ccode\u003ebf603d5\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6.4.3 to 6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a916d8f8253baa11bacc60f0868f0bab1e42d526\"\u003e\u003ccode\u003ea916d8f\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/de60f18bd97395a52a11b561eb62963e0ffe9e71\"\u003e\u003ccode\u003ede60f18\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1397\"\u003e#1397\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 25.0.1 to 25.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e25.2 (2025-07-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ccode\u003e[#13506](https://github.com/pypa/pip/issues/13506) \u0026lt;https://github.com/pypa/pip/issues/13506\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAutomatic download resumption and retrying is enabled by default. (\u003ccode\u003e[#13464](https://github.com/pypa/pip/issues/13464) \u0026lt;https://github.com/pypa/pip/issues/13464\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRequires-Python error message displays version clauses in numerical order. (\u003ccode\u003e[#13367](https://github.com/pypa/pip/issues/13367) \u0026lt;https://github.com/pypa/pip/issues/13367\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement getting the order to install a very large number of interdependent packages. (\u003ccode\u003e[#13424](https://github.com/pypa/pip/issues/13424) \u0026lt;https://github.com/pypa/pip/issues/13424\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow time taken instead of \u003ccode\u003eeta 0:00:00\u003c/code\u003e at download completion. (\u003ccode\u003e[#13483](https://github.com/pypa/pip/issues/13483) \u0026lt;https://github.com/pypa/pip/issues/13483\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eSpeed up small CLI tools by removing \u003ccode\u003eimport re\u003c/code\u003e from the console\nscript executable template. (\u003ccode\u003e[#13165](https://github.com/pypa/pip/issues/13165) \u0026lt;https://github.com/pypa/pip/issues/13165\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove warning when cloning from a Git reference that does not look like a commit hash. (\u003ccode\u003e[#12283](https://github.com/pypa/pip/issues/12283) \u0026lt;https://github.com/pypa/pip/issues/12283\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip config debug\u003c/code\u003e now correctly separates options as set by the different files\nat the same level. (\u003ccode\u003e[#12099](https://github.com/pypa/pip/issues/12099) \u0026lt;https://github.com/pypa/pip/issues/12099\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnsure truststore feature remains active even when a proxy is also in use. (\u003ccode\u003e[#13343](https://github.com/pypa/pip/issues/13343) \u0026lt;https://github.com/pypa/pip/issues/13343\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude sub-commands in tab completion. (\u003ccode\u003e[#13140](https://github.com/pypa/pip/issues/13140) \u0026lt;https://github.com/pypa/pip/issues/13140\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip list\u003c/code\u003e with the \u003ccode\u003ejson\u003c/code\u003e or \u003ccode\u003efreeze\u003c/code\u003e format enabled will no longer\ncrash when encountering a package with an invalid version. (\u003ccode\u003e[#13345](https://github.com/pypa/pip/issues/13345) \u0026lt;https://github.com/pypa/pip/issues/13345\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a hint if a system error is raised involving long filenames or path segments on Windows. (\u003ccode\u003e[#13346](https://github.com/pypa/pip/issues/13346) \u0026lt;https://github.com/pypa/pip/issues/13346\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResumed downloads are saved to the HTTP cache like any other normal download. (\u003ccode\u003e[#13441](https://github.com/pypa/pip/issues/13441) \u0026lt;https://github.com/pypa/pip/issues/13441\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfigured verbosity is consistently forwarded while calling Git during\nVCS operations. (\u003ccode\u003e[#13329](https://github.com/pypa/pip/issues/13329) \u0026lt;https://github.com/pypa/pip/issues/13329\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress the progress bar, when running with \u003ccode\u003e--log\u003c/code\u003e and \u003ccode\u003e--quiet\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eConsequently, a new \u003ccode\u003eauto\u003c/code\u003e mode for \u003ccode\u003e--progress-bar\u003c/code\u003e has been added.\n\u003ccode\u003eauto\u003c/code\u003e will enable progress bars unless suppressed by \u003ccode\u003e--quiet\u003c/code\u003e,\nwhile \u003ccode\u003eon\u003c/code\u003e will always enable progress bars. (\u003ccode\u003e[#10915](https://github.com/pypa/pip/issues/10915) \u0026lt;https://github.com/pypa/pip/issues/10915\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local URLs with non-\u003ccode\u003efile\u003c/code\u003e schemes. (\u003ccode\u003e[#13509](https://github.com/pypa/pip/issues/13509) \u0026lt;https://github.com/pypa/pip/issues/13509\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local file URLs on Windows in newer Python versions. (\u003ccode\u003e[#13510](https://github.com/pypa/pip/issues/13510) \u0026lt;https://github.com/pypa/pip/issues/13510\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix remaining test failures in Python 3.14 by adjusting \u003ccode\u003epath_to_url\u003c/code\u003e and similar functions. (\u003ccode\u003e[#13423](https://github.com/pypa/pip/issues/13423) \u0026lt;https://github.com/pypa/pip/issues/13423\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing \u003ccode\u003enetwork\u003c/code\u003e test markings, making the suite pass in offline\nenvironments again. (\u003ccode\u003e[#13378](https://github.com/pypa/pip/issues/13378) \u0026lt;https://github.com/pypa/pip/issues/13378\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CacheControl to 0.14.3\u003c/li\u003e\n\u003cli\u003eUpgrade certifi to 2025.7.14\u003c/li\u003e\n\u003cli\u003eUpgrade distlib to 0.4.0\u003c/li\u003e\n\u003cli\u003eUpgrade msgpack to 1.1.1\u003c/li\u003e\n\u003cli\u003eUpgrade platformdirs to 4.3.8\u003c/li\u003e\n\u003cli\u003eUpgrade pygments to 2.19.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.32.4\u003c/li\u003e\n\u003cli\u003eUpgrade resolvelib to 1.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/pip/commit/2e05cae3da2cfafa6dce58167a25b7dba4bc2a33\"\u003e\u003ccode\u003e2e05cae\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/f24906109c84ca51eef57a4f925298d38ff31df3\"\u003e\u003ccode\u003ef249061\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/78d15a5da09c6fbc5c2cd88fb5bd67bfd7fb0637\"\u003e\u003ccode\u003e78d15a5\u003c/code\u003e\u003c/a\u003e Copyedit news entries before 25.2 (again)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4fe68d78ae8b117ad413ec61c518dd600af08bf0\"\u003e\u003ccode\u003e4fe68d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13506\"\u003e#13506\u003c/a\u003e from ichard26/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/775a86f2bac8894771911ab068b18f09550cb6f0\"\u003e\u003ccode\u003e775a86f\u003c/code\u003e\u003c/a\u003e Fix broken unit tests \u0026amp; xfail weird failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2773b13baa59ec68b03df9f0f73e4e3c21fcd958\"\u003e\u003ccode\u003e2773b13\u003c/code\u003e\u003c/a\u003e Reformat and add --allow-unix-socket to pytest config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e384d1032c189312ac21f23844c9c6f1f4750eb1\"\u003e\u003ccode\u003ee384d10\u003c/code\u003e\u003c/a\u003e Declare Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4117dc7c6b606d825904ffbe35d51012923374f4\"\u003e\u003ccode\u003e4117dc7\u003c/code\u003e\u003c/a\u003e Always remove authority section when cleaning local URL path (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13510\"\u003e#13510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2e21934b5c35a0e6b41fd586399cd36ed304c03c\"\u003e\u003ccode\u003e2e21934\u003c/code\u003e\u003c/a\u003e Fix cleaning of local URLs with VCS schemes (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13509\"\u003e#13509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/853a593191d7205b837d32a72e0eb7e7b81e1821\"\u003e\u003ccode\u003e853a593\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003epath_to_url()\u003c/code\u003e tests (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13496\"\u003e#13496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/25.0.1...25.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/HISTORY.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.1.0\u003c/h1\u003e\n\u003cp\u003e2025-09-17\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2581_, [Windows]: publish ARM64 wheels.  (patch by Matthieu Darbois)\u003c/li\u003e\n\u003cli\u003e2571_, [FreeBSD]: Dropped support for FreeBSD 8 and earlier. FreeBSD 8 was\nmaintained from 2009 to 2013.\u003c/li\u003e\n\u003cli\u003e2575_: introduced \u003ccode\u003edprint\u003c/code\u003e CLI tool to format .yml and .md files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2473_, [macOS]: Fix build issue on macOS 11 and lower.\u003c/li\u003e\n\u003cli\u003e2494_, [Windows]: All APIs dealing with paths, such as\n\u003ccode\u003eProcess.memory_maps()\u003c/code\u003e\u003cem\u003e, \u003ccode\u003eProcess.exe()\u003c/code\u003e\u003c/em\u003e and \u003ccode\u003eProcess.open_files()\u003c/code\u003e_ does\nnot properly handle UNC paths. Paths such as \u003ccode\u003e\\\\??\\\\C:\\\\Windows\\\\Temp\u003c/code\u003e and\n\u003ccode\u003e'\\\\Device\\\\HarddiskVolume1\\\\Windows\\\\Temp'\u003c/code\u003e are now converted to\n\u003ccode\u003eC:\\\\Windows\\\\Temp\u003c/code\u003e.  (patch by Ben Peddell)\u003c/li\u003e\n\u003cli\u003e2506_, [Windows]: Windows service APIs had issues with unicode services using\nspecial characters in their name.\u003c/li\u003e\n\u003cli\u003e2514_, [Linux]: \u003ccode\u003eProcess.cwd()\u003c/code\u003e_ sometimes fail with \u003ccode\u003eFileNotFoundError\u003c/code\u003e due\nto a race condition.\u003c/li\u003e\n\u003cli\u003e2526_, [Linux]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e\u003cem\u003e, which is used to univocally\nidentify a process over time, is subject to system clock updates, and as such\ncan lead to \u003ccode\u003eProcess.is_running()\u003c/code\u003e\u003c/em\u003e returning a wrong result. A monotonic\ncreation time is now used instead.  (patch by Jonathan Kohler)\u003c/li\u003e\n\u003cli\u003e2528_, [Linux]: \u003ccode\u003eProcess.children()\u003c/code\u003e_ may raise \u003ccode\u003ePermissionError\u003c/code\u003e. It will\nnow raise \u003ccode\u003eAccessDenied\u003c/code\u003e_ instead.\u003c/li\u003e\n\u003cli\u003e2540_, [macOS]: \u003ccode\u003eboot_time()\u003c/code\u003e_ is off by 45 seconds (C precision issue).\u003c/li\u003e\n\u003cli\u003e2541_, 2570_, 2578_ [Linux], [macOS], [NetBSD]: \u003ccode\u003eProcess.create_time()\u003c/code\u003e_ does\nnot reflect system clock updates.\u003c/li\u003e\n\u003cli\u003e2542_: if system clock is updated \u003ccode\u003eProcess.children()\u003c/code\u003e_ and\n\u003ccode\u003eProcess.parent()\u003c/code\u003e_ may not be able to return the right information.\u003c/li\u003e\n\u003cli\u003e2545_: [Illumos]: Fix handling of MIB2_UDP_ENTRY in \u003ccode\u003enet_connections()\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003e2552_, [Windows]: \u003ccode\u003eboot_time()\u003c/code\u003e_ didn't take into account the time spent\nduring suspend / hibernation.\u003c/li\u003e\n\u003cli\u003e2560_, [Linux]: \u003ccode\u003eProcess.memory_maps()\u003c/code\u003e_ may crash with \u003ccode\u003eIndexError\u003c/code\u003e on\nRISCV64 due to a malformed \u003ccode\u003e/proc/{PID}/smaps\u003c/code\u003e file.  (patch by Julien\nStephan)\u003c/li\u003e\n\u003cli\u003e2586_, [macOS], [CRITICAL]: fixed different places in C code which can\ntrigger a segfault.\u003c/li\u003e\n\u003cli\u003e2604_, [Linux]: \u003ccode\u003evirtual_memory()\u003c/code\u003e_ \u0026quot;used\u0026quot; memory does not match recent\nversions of \u003ccode\u003efree\u003c/code\u003e CLI utility.  (patch by Isaac K. Ko)\u003c/li\u003e\n\u003cli\u003e2605_, [Linux]: \u003ccode\u003epsutil.sensors_battery()\u003c/code\u003e reports a negative amount for\nseconds left.\u003c/li\u003e\n\u003cli\u003e2607_, [Windows]: \u003ccode\u003eWindowsService.description()\u003c/code\u003e method may fail with\n\u003ccode\u003eERROR_NOT_FOUND\u003c/code\u003e. Now it returns an empty string instead.\u003c/li\u003e\n\u003cli\u003e2610:, [macOS], [CRITICAL]: fix \u003ccode\u003ecpu_freq()\u003c/code\u003e_ segfault on ARM architectures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/0d18187e79b349e577fadabd3589f8fdbf99bf5a\"\u003e\u003ccode\u003e0d18187\u003c/code\u003e\u003c/a\u003e Revert HISTORY notes about \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e. We still do publish 3.6 and 3.7 wheels.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/229e2de232860fe22e2c2884c20b8979c643d5c6\"\u003e\u003ccode\u003e229e2de\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/fb75b28226ec8e6b9e5b9eefa05a62de579cc114\"\u003e\u003ccode\u003efb75b28\u003c/code\u003e\u003c/a\u003e Chore: skip CI tests except on Python 3.8 and 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/3a4c01638bc61c77f43a05aea5bc6e1ddc81c6c4\"\u003e\u003ccode\u003e3a4c016\u003c/code\u003e\u003c/a\u003e Stop publishing wheels for Python 3.6 and 3.7 (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2629\"\u003e#2629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/83e4f7fdd76051dd8e0eeed99e2bf5fc881a2960\"\u003e\u003ccode\u003e83e4f7f\u003c/code\u003e\u003c/a\u003e OSX: disable failing test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/df0d4e2637917377bd5971f1745e881b75f2c6e2\"\u003e\u003ccode\u003edf0d4e2\u003c/code\u003e\u003c/a\u003e Call GetExtended[Tcp|Udp]Table twice under free-threaded build (round 2) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2627\"\u003e#2627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/dcbfb81e863fa2b8688ccd8da27b09b539404688\"\u003e\u003ccode\u003edcbfb81\u003c/code\u003e\u003c/a\u003e [Windows] fix unicode issues around service APIs (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2626\"\u003e#2626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ef72dcd076f1cec94ba50ec30b5dbebb272845d0\"\u003e\u003ccode\u003eef72dcd\u003c/code\u003e\u003c/a\u003e revert \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2590\"\u003e#2590\u003c/a\u003e (Call GetExtended[Tcp|Udp]Table twice under free-threaded build)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8773698006d387db90b3982d78fd4ff6b2ebe71c\"\u003e\u003ccode\u003e8773698\u003c/code\u003e\u003c/a\u003e small refact around UTXENT_MUTEX_LOCK\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/13b711fc3ffa384d481e03881e46ae48009c4eeb\"\u003e\u003ccode\u003e13b711f\u003c/code\u003e\u003c/a\u003e Lock around uses of getutent/setutent/endutent (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2615\"\u003e#2615\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/release-7.0.0...release-7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\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/theskumar/python-dotenv/commit/16e660d384b942b11879b44500afbbe021650448\"\u003e\u003ccode\u003e16e660d\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.0 → 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/667e82f18d6e5306894c8746c46b1da2d031bd23\"\u003e\u003ccode\u003e667e82f\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/9d85edb3b8652de4601f9ad8a7a49ad9909f898a\"\u003e\u003ccode\u003e9d85edb\u003c/code\u003e\u003c/a\u003e fix(cli): issue with execvpe on Windows (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8411987b9301f716245074872afa30646e9b9eb7\"\u003e\u003ccode\u003e8411987\u003c/code\u003e\u003c/a\u003e fix: ensure find_dotenv work reliably on python 3.13 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/01f899733de664cda0550207067eb36a1795062f\"\u003e\u003ccode\u003e01f8997\u003c/code\u003e\u003c/a\u003e docs update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.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 `ruamel-yaml` from 0.18.10 to 0.18.15\n\nUpdates `smart-open` from 7.1.0 to 7.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/releases\"\u003esmart-open's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003episkvorky/smart_open#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003episkvorky/smart_open#877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003episkvorky/smart_open#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003episkvorky/smart_open#875\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0.post1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003episkvorky/smart_open#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI badge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003episkvorky/smart_open#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003episkvorky/smart_open#871\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nThis version was yanked from PyPI because \u003ccode\u003epyproject.toml\u003c/code\u003e falsely claimed that python 3.7 was still supported.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003episkvorky/smart_open#857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003episkvorky/smart_open#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003episkvorky/smart_open#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003episkvorky/smart_open#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003episkvorky/smart_open#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003episkvorky/smart_open#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eModernize python packaging by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003episkvorky/smart_open#851\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.2.0\u003c/h2\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/blob/develop/CHANGELOG.md\"\u003esmart-open's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.3.1, 2025-09-08\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003e#877\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003e#878\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003e#875\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0.post1, 2025-07-03\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003e#868\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003e#867\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix CI badge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003e#869\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0, 2025-07-01\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003e#857\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003e#853\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003e#861\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003e#864\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003e#854\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernize python packaging (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003e#851\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/c17ae23c1cda0ba84d72ae12dc38442a57bd69e0\"\u003e\u003ccode\u003ec17ae23\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/b54438fb7d624cac8cde33feaea5ba22017d0d7e\"\u003e\u003ccode\u003eb54438f\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/676099ecc7889b3def7981ac56f888d8fcbb4a9b\"\u003e\u003ccode\u003e676099e\u003c/code\u003e\u003c/a\u003e Add .xz and increase performance of compression module (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/35843b97205a0fedec42bd3d3fa6d1afba6158e1\"\u003e\u003ccode\u003e35843b9\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5fefc681d16d0cbdb6a750d3209530a7ef549b98\"\u003e\u003ccode\u003e5fefc68\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/877\"\u003e#877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/414e2c45d0cbf49c38c677ce4b468e537386a4b0\"\u003e\u003ccode\u003e414e2c4\u003c/code\u003e\u003c/a\u003e Fix release.sh for the final merge back into develop (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/872\"\u003e#872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5313e526440b4ad53dd8850a3e53db9f35dc6fab\"\u003e\u003ccode\u003e5313e52\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/baed6541f6fdc1e48cf40cff5ca038bfa5db4543\"\u003e\u003ccode\u003ebaed654\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/aed8895e2b7463d624e36c98ef5585d243e7612d\"\u003e\u003ccode\u003eaed8895\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/69751d5405d7be4f57885ceba8811dcfa8ebea62\"\u003e\u003ccode\u003e69751d5\u003c/code\u003e\u003c/a\u003e Drop 3.7 support in pyproject.toml (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/871\"\u003e#871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.1.0...v7.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `structlog` from 25.2.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/releases\"\u003estructlog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.4.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eThe main feature is support for exception groups we \u003cdel\u003estole\u003c/del\u003e adapted from \u003ca href=\"https://rich.readthedocs.io/\"\u003eRich\u003c/a\u003e, however the main reason for this release at this point in time are backwards-incompatible changes in the upcoming Python 3.13.4. Update \u003cem\u003estructlog\u003c/em\u003e before updating Python, if you use \u003ccode\u003estructlog.stdlib.filter_by_level()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://www.klaviyo.com\"\u003eKlaviyo\u003c/a\u003e (@\u003ca href=\"https://github.com/klaviyo\"\u003eklaviyo\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), \u003ca href=\"https://blog.alternatebuild.dev\"\u003enate nowack\u003c/a\u003e (@\u003ca href=\"https://github.com/zzstoatzz\"\u003ezzstoatzz\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), Jesse Snyder (@\u003ca href=\"https://github.com/jessesnyder\"\u003ejessesnyder\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://www.miketheman.net\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https:/...\n\n_Description has been truncated_","html_url":"https://github.com/markhallen/dependabot-test-meltano/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/markhallen%2Fdependabot-test-meltano/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/packages"}},{"old_version":"2.16.0","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-09-15T13:02:50.000Z","version_change":"2.16.0 → 2.19.0","issue":{"uuid":"3417879030","node_id":"PR_kwDOOYeBPM6oogz9","number":35,"state":"open","title":"chore(deps): bump the runtime-dependencies group across 1 directory with 30 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-15T13:02:50.000Z","updated_at":"2025-09-22T12:30:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"runtime-dependencies","update_count":30,"packages":[{"name":"alembic","old_version":"1.15.2","new_version":"1.16.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"pip","old_version":"25.0.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.15"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.3.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"structlog","old_version":"25.2.0","new_version":"25.4.0","repository_url":"https://github.com/hynek/structlog"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.30.0","new_version":"20.34.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"azure-storage-blob","old_version":"12.25.1","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-core","old_version":"1.33.0","new_version":"1.35.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-identity","old_version":"1.21.0","new_version":"1.25.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"pymssql","old_version":"2.3.4","new_version":"2.3.7","repository_url":"https://github.com/pymssql/pymssql"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.12","repository_url":"https://github.com/getmoto/moto"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-docker","old_version":"3.2.1","new_version":"3.2.3","repository_url":"https://github.com/avast/pytest-docker"},{"name":"pytest-structlog","old_version":"1.1","new_version":"1.2","repository_url":"https://github.com/wimglenn/pytest-structlog"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"setproctitle","old_version":"1.3.5","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.1","repository_url":"https://github.com/python/mypy"},{"name":"types-dateparser","old_version":"1.2.0.20250208","new_version":"1.2.2.20250809","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-jsonschema","old_version":"4.23.0.20241208","new_version":"4.25.1.20250822","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-requests","old_version":"2.31.0.6","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-dependencies group with 30 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.15.2` | `1.16.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [pip](https://github.com/pypa/pip) | `25.0.1` | `25.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| ruamel-yaml | `0.18.10` | `0.18.15` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [structlog](https://github.com/hynek/structlog) | `25.2.0` | `25.4.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.30.0` | `20.34.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.25.1` | `12.26.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.33.0` | `1.35.1` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.21.0` | `1.25.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.3.4` | `2.3.7` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.12` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-docker](https://github.com/avast/pytest-docker) | `3.2.1` | `3.2.3` |\n| [pytest-structlog](https://github.com/wimglenn/pytest-structlog) | `1.1` | `1.2` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.5` | `1.3.7` |\n| [time-machine](https://github.com/adamchainz/time-machine) | `2.16.0` | `2.19.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.1` |\n| [types-dateparser](https://github.com/typeshed-internal/stub_uploader) | `1.2.0.20250208` | `1.2.2.20250809` |\n| [types-jsonschema](https://github.com/typeshed-internal/stub_uploader) | `4.23.0.20241208` | `4.25.1.20250822` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.31.0.6` | `2.32.4.20250913` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n\n\nUpdates `alembic` from 1.15.2 to 1.16.5\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.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.4\u003c/h1\u003e\n\u003cp\u003eReleased: July 10, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue in new \u003ccode\u003epyproject.toml\u003c/code\u003e support where boolean values, such as\nthose used for the \u003ccode\u003erecursive_version_locations\u003c/code\u003e and \u003ccode\u003esourceless\u003c/code\u003e\nconfiguration parameters, would not be accepted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1694\"\u003e#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.3\u003c/h1\u003e\n\u003cp\u003eReleased: July 8, 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 new \u003ccode\u003epyproject_async\u003c/code\u003e template, combining the new \u003ccode\u003epyproject\u003c/code\u003e\ntemplate with the \u003ccode\u003easync\u003c/code\u003e template.  Pull request courtesy Alc-Alc.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1683\"\u003e#1683\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Add \u0026quot;module\u0026quot; post-write hook. This hook type is almost identical to the\nconsole_scripts hook, except it's running \u003ccode\u003epython -m black\u003c/code\u003e instead of\nusing black's \u003ccode\u003econsole_script\u003c/code\u003e. It is mainly useful for tools without\nconsole scripts (e.g. ruff), but has semantics closer to the\nconsole_scripts hook in that it finds the ruff module available to the\nrunning interpreter instead of finding an executable by path. Pull request\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\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 `anyio` from 4.9.0 to 4.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\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\n(\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\nkeyword argument\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\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\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint\n(special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and\nChristoffer Fjord)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/2eda004497cc7ab2b8c1ede4d7c4c276f0840fd9\"\u003e\u003ccode\u003e2eda004\u003c/code\u003e\u003c/a\u003e Added an example on how to use move_on_after() with shielding\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsonschema` from 4.23.0 to 4.25.1\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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.25.0...v4.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.25.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003eiri\u003c/code\u003e and \u003ccode\u003eiri-reference\u003c/code\u003e formats to the \u003ccode\u003eformat-nongpl\u003c/code\u003e extra by \u003ca href=\"https://github.com/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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/jkowalleck\"\u003e\u003ccode\u003e@​jkowalleck\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1388\"\u003epython-jsonschema/jsonschema#1388\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.24.1...v4.25.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.1...v4.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUnambiguously quote and escape properties in JSON path rendering by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop python\u0026lt;3.9 backports by \u003ca href=\"https://github.com/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\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/hackowitz-af\"\u003e\u003ccode\u003e@​hackowitz-af\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1367\"\u003epython-jsonschema/jsonschema#1367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1390\"\u003epython-jsonschema/jsonschema#1390\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.24.0...v4.24.1\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.24.0...v4.24.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.24.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix calculation of evaluated properties by \u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#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\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bkueng\"\u003e\u003ccode\u003e@​bkueng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1326\"\u003epython-jsonschema/jsonschema#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/V02460\"\u003e\u003ccode\u003e@​V02460\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/pull/1351\"\u003epython-jsonschema/jsonschema#1351\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.23.0...v4.24.0\"\u003ehttps://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.24.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst\"\u003ejsonschema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/331c38425519b69118d22ebe467ad230fb83a010\"\u003e\u003ccode\u003e331c384\u003c/code\u003e\u003c/a\u003e Add the fix to the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/c1ec0a645e913e83de95995f6efbbd358676abf6\"\u003e\u003ccode\u003ec1ec0a6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1398\"\u003e#1398\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/8e7d594faff13f8f663b306a0d86bea0ce5de6cb\"\u003e\u003ccode\u003e8e7d594\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1399\"\u003e#1399\u003c/a\u003e from python-jsonschema/dependabot/github_actions/act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/460f4fae42664773160f56ccc843a4fcea34f7cf\"\u003e\u003ccode\u003e460f4fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1396\"\u003e#1396\u003c/a\u003e from sirosen/improve-protocol-init-signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/1e58409b71a9696b7bf9938ae8a3a48ef95ab29e\"\u003e\u003ccode\u003e1e58409\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/64bc2171624ef201bdbf35e47780348ce30935c5\"\u003e\u003ccode\u003e64bc217\u003c/code\u003e\u003c/a\u003e Add a typing test for the Validator protocol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/6c25741bff889477680f9b0d1aa967ae35c38f43\"\u003e\u003ccode\u003e6c25741\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/bf603d59117f840916709fc87c6625df43d1fe72\"\u003e\u003ccode\u003ebf603d5\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6.4.3 to 6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/a916d8f8253baa11bacc60f0868f0bab1e42d526\"\u003e\u003ccode\u003ea916d8f\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidator\u003c/code\u003e protocol init to match runtime\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-jsonschema/jsonschema/commit/de60f18bd97395a52a11b561eb62963e0ffe9e71\"\u003e\u003ccode\u003ede60f18\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-jsonschema/jsonschema/issues/1397\"\u003e#1397\u003c/a\u003e from python-jsonschema/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-jsonschema/jsonschema/compare/v4.23.0...v4.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 25.0.1 to 25.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e25.2 (2025-07-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ccode\u003e[#13506](https://github.com/pypa/pip/issues/13506) \u0026lt;https://github.com/pypa/pip/issues/13506\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAutomatic download resumption and retrying is enabled by default. (\u003ccode\u003e[#13464](https://github.com/pypa/pip/issues/13464) \u0026lt;https://github.com/pypa/pip/issues/13464\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRequires-Python error message displays version clauses in numerical order. (\u003ccode\u003e[#13367](https://github.com/pypa/pip/issues/13367) \u0026lt;https://github.com/pypa/pip/issues/13367\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement getting the order to install a very large number of interdependent packages. (\u003ccode\u003e[#13424](https://github.com/pypa/pip/issues/13424) \u0026lt;https://github.com/pypa/pip/issues/13424\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow time taken instead of \u003ccode\u003eeta 0:00:00\u003c/code\u003e at download completion. (\u003ccode\u003e[#13483](https://github.com/pypa/pip/issues/13483) \u0026lt;https://github.com/pypa/pip/issues/13483\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eSpeed up small CLI tools by removing \u003ccode\u003eimport re\u003c/code\u003e from the console\nscript executable template. (\u003ccode\u003e[#13165](https://github.com/pypa/pip/issues/13165) \u0026lt;https://github.com/pypa/pip/issues/13165\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove warning when cloning from a Git reference that does not look like a commit hash. (\u003ccode\u003e[#12283](https://github.com/pypa/pip/issues/12283) \u0026lt;https://github.com/pypa/pip/issues/12283\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip config debug\u003c/code\u003e now correctly separates options as set by the different files\nat the same level. (\u003ccode\u003e[#12099](https://github.com/pypa/pip/issues/12099) \u0026lt;https://github.com/pypa/pip/issues/12099\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnsure truststore feature remains active even when a proxy is also in use. (\u003ccode\u003e[#13343](https://github.com/pypa/pip/issues/13343) \u0026lt;https://github.com/pypa/pip/issues/13343\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInclude sub-commands in tab completion. (\u003ccode\u003e[#13140](https://github.com/pypa/pip/issues/13140) \u0026lt;https://github.com/pypa/pip/issues/13140\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip list\u003c/code\u003e with the \u003ccode\u003ejson\u003c/code\u003e or \u003ccode\u003efreeze\u003c/code\u003e format enabled will no longer\ncrash when encountering a package with an invalid version. (\u003ccode\u003e[#13345](https://github.com/pypa/pip/issues/13345) \u0026lt;https://github.com/pypa/pip/issues/13345\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a hint if a system error is raised involving long filenames or path segments on Windows. (\u003ccode\u003e[#13346](https://github.com/pypa/pip/issues/13346) \u0026lt;https://github.com/pypa/pip/issues/13346\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResumed downloads are saved to the HTTP cache like any other normal download. (\u003ccode\u003e[#13441](https://github.com/pypa/pip/issues/13441) \u0026lt;https://github.com/pypa/pip/issues/13441\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfigured verbosity is consistently forwarded while calling Git during\nVCS operations. (\u003ccode\u003e[#13329](https://github.com/pypa/pip/issues/13329) \u0026lt;https://github.com/pypa/pip/issues/13329\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress the progress bar, when running with \u003ccode\u003e--log\u003c/code\u003e and \u003ccode\u003e--quiet\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eConsequently, a new \u003ccode\u003eauto\u003c/code\u003e mode for \u003ccode\u003e--progress-bar\u003c/code\u003e has been added.\n\u003ccode\u003eauto\u003c/code\u003e will enable progress bars unless suppressed by \u003ccode\u003e--quiet\u003c/code\u003e,\nwhile \u003ccode\u003eon\u003c/code\u003e will always enable progress bars. (\u003ccode\u003e[#10915](https://github.com/pypa/pip/issues/10915) \u0026lt;https://github.com/pypa/pip/issues/10915\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local URLs with non-\u003ccode\u003efile\u003c/code\u003e schemes. (\u003ccode\u003e[#13509](https://github.com/pypa/pip/issues/13509) \u0026lt;https://github.com/pypa/pip/issues/13509\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix normalization of local file URLs on Windows in newer Python versions. (\u003ccode\u003e[#13510](https://github.com/pypa/pip/issues/13510) \u0026lt;https://github.com/pypa/pip/issues/13510\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix remaining test failures in Python 3.14 by adjusting \u003ccode\u003epath_to_url\u003c/code\u003e and similar functions. (\u003ccode\u003e[#13423](https://github.com/pypa/pip/issues/13423) \u0026lt;https://github.com/pypa/pip/issues/13423\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing \u003ccode\u003enetwork\u003c/code\u003e test markings, making the suite pass in offline\nenvironments again. (\u003ccode\u003e[#13378](https://github.com/pypa/pip/issues/13378) \u0026lt;https://github.com/pypa/pip/issues/13378\u0026gt;\u003c/code\u003e_)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CacheControl to 0.14.3\u003c/li\u003e\n\u003cli\u003eUpgrade certifi to 2025.7.14\u003c/li\u003e\n\u003cli\u003eUpgrade distlib to 0.4.0\u003c/li\u003e\n\u003cli\u003eUpgrade msgpack to 1.1.1\u003c/li\u003e\n\u003cli\u003eUpgrade platformdirs to 4.3.8\u003c/li\u003e\n\u003cli\u003eUpgrade pygments to 2.19.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.32.4\u003c/li\u003e\n\u003cli\u003eUpgrade resolvelib to 1.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/pip/commit/2e05cae3da2cfafa6dce58167a25b7dba4bc2a33\"\u003e\u003ccode\u003e2e05cae\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/f24906109c84ca51eef57a4f925298d38ff31df3\"\u003e\u003ccode\u003ef249061\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/78d15a5da09c6fbc5c2cd88fb5bd67bfd7fb0637\"\u003e\u003ccode\u003e78d15a5\u003c/code\u003e\u003c/a\u003e Copyedit news entries before 25.2 (again)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4fe68d78ae8b117ad413ec61c518dd600af08bf0\"\u003e\u003ccode\u003e4fe68d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13506\"\u003e#13506\u003c/a\u003e from ichard26/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/775a86f2bac8894771911ab068b18f09550cb6f0\"\u003e\u003ccode\u003e775a86f\u003c/code\u003e\u003c/a\u003e Fix broken unit tests \u0026amp; xfail weird failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2773b13baa59ec68b03df9f0f73e4e3c21fcd958\"\u003e\u003ccode\u003e2773b13\u003c/code\u003e\u003c/a\u003e Reformat and add --allow-unix-socket to pytest config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e384d1032c189312ac21f23844c9c6f1f4750eb1\"\u003e\u003ccode\u003ee384d10\u003c/code\u003e\u003c/a\u003e Declare Python 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/4117dc7c6b606d825904ffbe35d51012923374f4\"\u003e\u003ccode\u003e4117dc7\u003c/code\u003e\u003c/a\u003e Always remove authority section when cleaning local URL path (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13510\"\u003e#13510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2e21934b5c35a0e6b41fd586399cd36ed304c03c\"\u003e\u003ccode\u003e2e21934\u003c/code\u003e\u003c/a\u003e Fix cleaning of local URLs with VCS schemes (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13509\"\u003e#13509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/853a593191d7205b837d32a72e0eb7e7b81e1821\"\u003e\u003ccode\u003e853a593\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003epath_to_url()\u003c/code\u003e tests (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13496\"\u003e#13496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/25.0.1...25.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv work reliably on python 3.13 by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\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/theskumar/python-dotenv/commit/16e660d384b942b11879b44500afbbe021650448\"\u003e\u003ccode\u003e16e660d\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.0 → 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/667e82f18d6e5306894c8746c46b1da2d031bd23\"\u003e\u003ccode\u003e667e82f\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/9d85edb3b8652de4601f9ad8a7a49ad9909f898a\"\u003e\u003ccode\u003e9d85edb\u003c/code\u003e\u003c/a\u003e fix(cli): issue with execvpe on Windows (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8411987b9301f716245074872afa30646e9b9eb7\"\u003e\u003ccode\u003e8411987\u003c/code\u003e\u003c/a\u003e fix: ensure find_dotenv work reliably on python 3.13 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/01f899733de664cda0550207067eb36a1795062f\"\u003e\u003ccode\u003e01f8997\u003c/code\u003e\u003c/a\u003e docs update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.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 `ruamel-yaml` from 0.18.10 to 0.18.15\n\nUpdates `smart-open` from 7.1.0 to 7.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/releases\"\u003esmart-open's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003episkvorky/smart_open#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003episkvorky/smart_open#877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003episkvorky/smart_open#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003episkvorky/smart_open#875\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0.post1...v7.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0.post1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003episkvorky/smart_open#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI badge by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003episkvorky/smart_open#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003episkvorky/smart_open#871\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003episkvorky/smart_open#867\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.3.0...v7.3.0.post1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.3.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nThis version was yanked from PyPI because \u003ccode\u003epyproject.toml\u003c/code\u003e falsely claimed that python 3.7 was still supported.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003episkvorky/smart_open#857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003episkvorky/smart_open#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003episkvorky/smart_open#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003episkvorky/smart_open#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003episkvorky/smart_open#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003episkvorky/smart_open#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eModernize python packaging by \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003episkvorky/smart_open#851\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\"\u003ehttps://github.com/piskvorky/smart_open/compare/v7.2.0...v7.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.2.0\u003c/h2\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/piskvorky/smart_open/blob/develop/CHANGELOG.md\"\u003esmart-open's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.3.1, 2025-09-08\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh for the final merge back into develop (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/877\"\u003e#877\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/878\"\u003e#878\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd .xz and increase performance of compression module (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/875\"\u003e#875\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0.post1, 2025-07-03\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix release.sh merge message and final merge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/868\"\u003e#868\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump softprops/action-gh-release from 2.2.1 to 2.3.2 in the github-actions group (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/867\"\u003e#867\u003c/a\u003e, \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix CI badge (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/869\"\u003e#869\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.7 support in pyproject.toml (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.3.0, 2025-07-01\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove head_bucket call from s3.SinglepartWriter (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/857\"\u003e#857\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd help.txt linting step (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/853\"\u003e#853\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd buffer_size transport param to ssh.py (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/861\"\u003e#861\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix integration test CI rot (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/864\"\u003e#864\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix try-except in ssh.py for missing port in ssh config (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake s3.SinglepartWriter seekable (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/854\"\u003e#854\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernize python packaging (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/851\"\u003e#851\u003c/a\u003e, \u003ca href=\"https://github.com/ddelange\"\u003e\u003ccode\u003e@​ddelange\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0, 2025-03-06\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for prefetching to sftp transport (PR \u003ca href=\"https://redirect.github.com/piskvorky/smart_open/pull/849\"\u003e#849\u003c/a\u003e, \u003ca href=\"https://github.com/davidszotten\"\u003e\u003ccode\u003e@​davidszotten\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/c17ae23c1cda0ba84d72ae12dc38442a57bd69e0\"\u003e\u003ccode\u003ec17ae23\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/b54438fb7d624cac8cde33feaea5ba22017d0d7e\"\u003e\u003ccode\u003eb54438f\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/676099ecc7889b3def7981ac56f888d8fcbb4a9b\"\u003e\u003ccode\u003e676099e\u003c/code\u003e\u003c/a\u003e Add .xz and increase performance of compression module (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/35843b97205a0fedec42bd3d3fa6d1afba6158e1\"\u003e\u003ccode\u003e35843b9\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5fefc681d16d0cbdb6a750d3209530a7ef549b98\"\u003e\u003ccode\u003e5fefc68\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/877\"\u003e#877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/414e2c45d0cbf49c38c677ce4b468e537386a4b0\"\u003e\u003ccode\u003e414e2c4\u003c/code\u003e\u003c/a\u003e Fix release.sh for the final merge back into develop (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/872\"\u003e#872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/5313e526440b4ad53dd8850a3e53db9f35dc6fab\"\u003e\u003ccode\u003e5313e52\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/baed6541f6fdc1e48cf40cff5ca038bfa5db4543\"\u003e\u003ccode\u003ebaed654\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/aed8895e2b7463d624e36c98ef5585d243e7612d\"\u003e\u003ccode\u003eaed8895\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/piskvorky/smart_open/commit/69751d5405d7be4f57885ceba8811dcfa8ebea62\"\u003e\u003ccode\u003e69751d5\u003c/code\u003e\u003c/a\u003e Drop 3.7 support in pyproject.toml (\u003ca href=\"https://redirect.github.com/piskvorky/smart_open/issues/871\"\u003e#871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/piskvorky/smart_open/compare/v7.1.0...v7.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `structlog` from 25.2.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/releases\"\u003estructlog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.4.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eThe main feature is support for exception groups we \u003cdel\u003estole\u003c/del\u003e adapted from \u003ca href=\"https://rich.readthedocs.io/\"\u003eRich\u003c/a\u003e, however the main reason for this release at this point in time are backwards-incompatible changes in the upcoming Python 3.13.4. Update \u003cem\u003estructlog\u003c/em\u003e before updating Python, if you use \u003ccode\u003estructlog.stdlib.filter_by_level()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://www.klaviyo.com\"\u003eKlaviyo\u003c/a\u003e (@\u003ca href=\"https://github.com/klaviyo\"\u003eklaviyo\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), \u003ca href=\"https://blog.alternatebuild.dev\"\u003enate nowack\u003c/a\u003e (@\u003ca href=\"https://github.com/zzstoatzz\"\u003ezzstoatzz\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), Jesse Snyder (@\u003ca href=\"https://github.com/jessesnyder\"\u003ejessesnyder\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://www.miketheman.net\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://mpr.crossjam.net/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Moving Content AG (@\u003ca href=\"https://github.com/moving-content\"\u003emoving-content\u003c/a\u003e), \u003ca href=\"https://proteinqure.com/\"\u003eProteinQure\u003c/a\u003e (@\u003ca href=\"https://github.com/ProteinQure\"\u003eProteinQure\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), and \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eNot to forget 14 more amazing humans who chose to be generous but anonymous!\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport for Python 3.14 and Python 3.13.4.\u003c/p\u003e\n\u003cp\u003ePython 3.14 has an backwards-incompatible change to \u003ccode\u003elogging.Logger.isEnabledFor()\u003c/code\u003e (it now always returns False if a log entry is in flight) that has been backported to 3.13.4 (expected on 2025-06-03). It mainly affects \u003ccode\u003estructlog.stdlib.filter_by_level()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/723\"\u003e#723\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.tracebacks\u003c/code\u003e now handles \u003ca href=\"https://docs.python.org/3/library/exceptions.html#exception-groups\"\u003eexception groups\u003c/a\u003e. \u003ccode\u003estructlog.tracebacks.Stack\u003c/code\u003e has two new fields, \u003ccode\u003eis_group: bool\u003c/code\u003e and \u003ccode\u003eexceptions: list[Trace]\u003c/code\u003e. This works similarly to what Rich v14.0.0 does. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/720\"\u003e#720\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.processors.ExceptionPrettyPrinter\u003c/code\u003e now respects the \u003cem\u003eexception_formatter\u003c/em\u003e arguments instead of always using the default formatter. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/724\"\u003e#724\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eThis release contains contributions from \u003ca href=\"https://github.com/anujdas\"\u003e\u003ccode\u003e@​anujdas\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/hynek\"\u003e\u003ccode\u003e@​hynek\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/sscherfke\"\u003e\u003ccode\u003e@​sscherfke\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eArtifact Attestations\u003c/h2\u003e\n\u003cp\u003eYou can verify this release's \u003ca href=\"https://docs.github.com/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\"\u003eartifact attestions\u003c/a\u003e using \u003ca href=\"https://cli.github.com\"\u003eGitHub's CLI tool\u003c/a\u003e by downloading the sdist and wheel from \u003ca href=\"https://pypi.org/project/structlog\"\u003ePyPI\u003c/a\u003e and running:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ gh attestation verify --owner hynek structlog-25.4.0.tar.gz\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/blob/main/CHANGELOG.md\"\u003estructlog's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/structlog/compare/25.3.0...25.4.0\"\u003e25.4.0\u003c/a\u003e - 2025-06-02\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport for Python 3.14 and Python 3.13.4.\u003c/p\u003e\n\u003cp\u003ePython 3.14 has an backwards-incompatible change to \u003ccode\u003elogging.Logger.isEnabledFor()\u003c/code\u003e (it now always returns False if a log entry is in flight) that has been backported to 3.13.4 (expected on 2025-06-03).\nIt mainly affects \u003ccode\u003estructlog.stdlib.filter_by_level()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/723\"\u003e#723\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.tracebacks\u003c/code\u003e now handles \u003ca href=\"https://docs.python.org/3/library/exceptions.html#exception-groups\"\u003eexception groups\u003c/a\u003e.\n\u003ccode\u003estructlog.tracebacks.Stack\u003c/code\u003e has two new fields, \u003ccode\u003eis_group: bool\u003c/code\u003e and \u003ccode\u003eexceptions: list[Trace]\u003c/code\u003e.\nThis works similarly to what Rich v14.0.0 does.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/720\"\u003e#720\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.processors.ExceptionPrettyPrinter\u003c/code\u003e now respects the \u003cem\u003eexception_formatter\u003c/em\u003e arguments instead of always using the default formatter.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/724\"\u003e#724\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/structlog/compare/25.2.0...25.3.0\"\u003e25.3.0\u003c/a\u003e - 2025-04-25\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.processors.TimeStamper\u003c/code\u003e now again uses timestamps using UTC for custom format strings when \u003ccode\u003eutc=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/713\"\u003e#713\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/hynek/structlog/commit/d38385cda711f62ad56018abfd72d4384f94e3ce\"\u003e\u003ccode\u003ed38385c\u003c/code\u003e\u003c/a\u003e Prepare 25.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/57e165bfacb79eb5942389c20eb9d883d88bfcb6\"\u003e\u003ccode\u003e57e165b\u003c/code\u003e\u003c/a\u003e Make Mypy 1.16 pass\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/e941e337d312eaf256595d9d09da4542c5e94d0b\"\u003e\u003ccode\u003ee941e33\u003c/code\u003e\u003c/a\u003e ci: work around weird new failure in Mypy 1.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/d9480273261e4d55d05465c434c41c7e25af4dde\"\u003e\u003ccode\u003ed948027\u003c/code\u003e\u003c/a\u003e Update Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/ea14fda0c7067237292f4f214890054c77036e0e\"\u003e\u003ccode\u003eea14fda\u003c/code\u003e\u003c/a\u003e Oxford...\n\n_Description has been truncated_","html_url":"https://github.com/markhallen/dependabot-test-meltano/pull/35","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/markhallen%2Fdependabot-test-meltano/issues/35","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/35/packages"}},{"old_version":"2.16.0","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-09-12T19:53:31.000Z","version_change":"2.16.0 → 2.19.0","issue":{"uuid":"2823883941","node_id":"PR_kwDOPu319M6oUQyl","number":3,"state":"open","title":"build(deps): bump time-machine from 2.16.0 to 2.19.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-12T19:53:31.000Z","updated_at":"2025-09-12T19:53:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"}],"path":null,"ecosystem":"pip"},"body":"Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.16.0 to 2.19.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time-machine\u0026package-manager=pip\u0026previous-version=2.16.0\u0026new-version=2.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/wmhcarter2024/freelawproject-courtlistener/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wmhcarter2024%2Ffreelawproject-courtlistener/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"}},{"old_version":"2.16.0","new_version":"2.19.0","update_type":"minor","path":null,"pr_created_at":"2025-09-05T12:21:19.000Z","version_change":"2.16.0 → 2.19.0","issue":{"uuid":"2802431823","node_id":"PR_kwDOPGO3Ws6nCbdP","number":56,"state":"closed","title":"Bump the lint_and_test group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-09-08T12:26:51.000Z","author_association":"NONE","state_reason":null,"created_at":"2025-09-05T12:21:19.000Z","updated_at":"2025-09-08T12:26:51.000Z","time_to_close":259532,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"lint_and_test","update_count":3,"packages":[{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"time-machine","old_version":"2.16.0","new_version":"2.19.0","repository_url":"https://github.com/adamchainz/time-machine"},{"name":"ruff","old_version":"0.12.1","new_version":"0.12.12","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the lint_and_test group with 3 updates in the / directory: [pytest](https://github.com/pytest-dev/pytest), [time-machine](https://github.com/adamchainz/time-machine) and [ruff](https://github.com/astral-sh/ruff).\n\nUpdates `pytest` from 8.4.1 to 8.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003ch1\u003epytest 8.4.2 (2025-09-03)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13478\"\u003e#13478\u003c/a\u003e: Fixed a crash when using \u003ccode\u003econsole_output_style\u003c/code\u003e{.interpreted-text role=\u0026quot;confval\u0026quot;} with \u003ccode\u003etimes\u003c/code\u003e and a module is skipped.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13530\"\u003e#13530\u003c/a\u003e: Fixed a crash when using \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} and \u003ccode\u003edecimal.Decimal\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} instances with the \u003ccode\u003edecimal.FloatOperation\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} trap set.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13549\"\u003e#13549\u003c/a\u003e: No longer evaluate type annotations in Python \u003ccode\u003e3.14\u003c/code\u003e when inspecting function signatures.\u003c/p\u003e\n\u003cp\u003eThis prevents crashes during module collection when modules do not explicitly use \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e and import types for annotations within a \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13559\"\u003e#13559\u003c/a\u003e: Added missing [int]{.title-ref} and [float]{.title-ref} variants to the [Literal]{.title-ref} type annotation of the [type]{.title-ref} parameter in \u003ccode\u003epytest.Parser.addini\u003c/code\u003e{.interpreted-text role=\u0026quot;meth\u0026quot;}.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13563\"\u003e#13563\u003c/a\u003e: \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} now only imports \u003ccode\u003enumpy\u003c/code\u003e if NumPy is already in \u003ccode\u003esys.modules\u003c/code\u003e. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13577\"\u003e#13577\u003c/a\u003e: Clarify that \u003ccode\u003epytest_generate_tests\u003c/code\u003e is discovered in test modules/classes; other hooks must be in \u003ccode\u003econftest.py\u003c/code\u003e or plugins.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13480\"\u003e#13480\u003c/a\u003e: Self-testing: fixed a few test failures when run with \u003ccode\u003e-Wdefault\u003c/code\u003e or a similar override.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13547\"\u003e#13547\u003c/a\u003e: Self-testing: corrected expected message for \u003ccode\u003etest_doctest_unexpected_exception\u003c/code\u003e in Python \u003ccode\u003e3.14\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13684\"\u003e#13684\u003c/a\u003e: Make pytest's own testsuite insensitive to the presence of the \u003ccode\u003eCI\u003c/code\u003e environment variable -- by \u003ccode\u003eogrisel\u003c/code\u003e{.interpreted-text role=\u0026quot;user\u0026quot;}.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bfae4224fd554d3d7f2c277a4cc092b6ec6af3ae\"\u003e\u003ccode\u003ebfae422\u003c/code\u003e\u003c/a\u003e Prepare release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/89905381a163be30ae87d62e5f750e902d750c5f\"\u003e\u003ccode\u003e8990538\u003c/code\u003e\u003c/a\u003e Fix passenv CI in tox ini and make tests insensitive to the presence of the C...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ca676bfe005aebcb12f4146d1b0f1d2772e2cd5d\"\u003e\u003ccode\u003eca676bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13687\"\u003e#13687\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/e63f6e51c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/975a60a63ce385a44655596e254c1899feaa53e4\"\u003e\u003ccode\u003e975a60a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13686\"\u003e#13686\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/12bde8af6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7723ce84b87ab08f86ddafcb342acc28ba5ec99d\"\u003e\u003ccode\u003e7723ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13683\"\u003e#13683\u003c/a\u003e from even-even/fix_Exeption_to_Exception_in_errorMe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7f05680d1301e0969b30bcb3c4b27433c9ee2b7\"\u003e\u003ccode\u003eb7f0568\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13685\"\u003e#13685\u003c/a\u003e from CoretexShadow/fix/docs-pytest-generate-tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/2c94c4a6948ba53440818389298157fa5d5f94cd\"\u003e\u003ccode\u003e2c94c4a\u003c/code\u003e\u003c/a\u003e add missing colon (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13640\"\u003e#13640\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13641\"\u003e#13641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c3d7684bc01c8c48d05145a30c5211ca8656c68c\"\u003e\u003ccode\u003ec3d7684\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13606\"\u003e#13606\u003c/a\u003e from pytest-dev/patchback/backports/8.4.x/5f9938563...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/dc6e3be2ddc75a149b6d102d9b7c82ee47a00cfa\"\u003e\u003ccode\u003edc6e3be\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13605\"\u003e#13605\u003c/a\u003e from The-Compiler/training-update-2025-07\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f87289c36c8dbe7740e3020f5546b6f8b0861ff0\"\u003e\u003ccode\u003ef87289c\u003c/code\u003e\u003c/a\u003e Fix crash with \u003ccode\u003etimes\u003c/code\u003e output style and skipped module (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13573\"\u003e#13573\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13579\"\u003e#13579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.1...8.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `time-machine` from 2.16.0 to 2.19.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst\"\u003etime-machine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0 (2025-08-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd marker support to :doc:\u003ccode\u003ethe pytest plugin \u0026lt;pytest_plugin\u0026gt;\u003c/code\u003e.\nDecorate tests with \u003ccode\u003e@pytest.mark.time_machine(\u0026lt;destination\u0026gt;)\u003c/code\u003e to set time during a test, affecting function-level fixtures as well.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#499](https://github.com/adamchainz/time-machine/issues/499) \u0026lt;https://github.com/adamchainz/time-machine/pull/499\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd asynchronous context manager support to \u003ccode\u003etime_machine.travel()\u003c/code\u003e.\nYou can now use \u003ccode\u003easync with time_machine.travel(...):\u003c/code\u003e in asynchronous code, per :ref:\u003ccode\u003ethe documentation \u0026lt;travel-context-manager\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#556](https://github.com/adamchainz/time-machine/issues/556) \u0026lt;https://github.com/adamchainz/time-machine/issues/556\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImport date and time functions once in the C extension.\u003c/p\u003e\n\u003cp\u003eThis should improve speed a little bit, and avoid segmentation faults when the functions have been swapped out, such as when freezegun is in effect.\n(time-machine still won’t apply if freezegun is in effect.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#555](https://github.com/adamchainz/time-machine/issues/555) \u0026lt;https://github.com/adamchainz/time-machine/issues/555\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.18.0 (2025-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the :ref:\u003ccode\u003emigration CLI \u0026lt;migration-cli\u0026gt;\u003c/code\u003e to detect unittest classes based on whether they use \u003ccode\u003eself.assert*\u003c/code\u003e methods like \u003ccode\u003eself.assertEqual()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix free-threaded Python warning: \u003ccode\u003eRuntimeWarning: The global interpreter lock (GIL) has been enabled...\u003c/code\u003e as seen on Python 3.13+.\u003c/p\u003e\n\u003cp\u003eThanks to Javier Buzzi in \u003ccode\u003ePR [#531](https://github.com/adamchainz/time-machine/issues/531) \u0026lt;https://github.com/adamchainz/time-machine/pull/531\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support to \u003ccode\u003etravel()\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e destinations with \u003ccode\u003etzinfo\u003c/code\u003e set to \u003ccode\u003edatetime.UTC\u003c/code\u003e (\u003ccode\u003edatetime.timezone.utc\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eThanks to Lawrence Law in \u003ccode\u003ePR [#502](https://github.com/adamchainz/time-machine/issues/502) \u0026lt;https://github.com/adamchainz/time-machine/pull/502\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent segmentation faults in unlikely scenarios, such as if the \u003ccode\u003etime_machine\u003c/code\u003e module cannot be imported.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#543](https://github.com/adamchainz/time-machine/issues/543) \u0026lt;https://github.com/adamchainz/time-machine/pull/543\u0026gt;\u003c/code\u003e\u003cstrong\u003e, \u003ccode\u003ePR [#545](https://github.com/adamchainz/time-machine/issues/545) \u0026lt;https://github.com/adamchainz/time-machine/pull/545\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003etravel()\u003c/code\u003e fully unpatch date and time functions when travel ends. This may fix certain edge cases.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eIssue [#532](https://github.com/adamchainz/time-machine/issues/532) \u0026lt;https://github.com/adamchainz/time-machine/issues/532\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.17.0 (2025-08-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInclude wheels for Python 3.14.\u003c/p\u003e\n\u003cp\u003eThanks to Edgar Ramírez Mondragón in \u003ccode\u003ePR [#521](https://github.com/adamchainz/time-machine/issues/521) \u0026lt;https://github.com/adamchainz/time-machine/pull/521\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport free-threaded Python.\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/adamchainz/time-machine/commit/c64e79f89bdb02ed01866eb9f74c86006606ecd6\"\u003e\u003ccode\u003ec64e79f\u003c/code\u003e\u003c/a\u003e Version 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/aa78214ad6415c96d8e2f6e350457811927e9f3f\"\u003e\u003ccode\u003eaa78214\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/d4c2e643b7870728ca0b09ea79053d8da5ae7289\"\u003e\u003ccode\u003ed4c2e64\u003c/code\u003e\u003c/a\u003e Edit changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c271664fed8bdd4617f2cdea83e64aec621b449c\"\u003e\u003ccode\u003ec271664\u003c/code\u003e\u003c/a\u003e Tweak title capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/c9775a3c2aed74619db909110152f28dc9cae4cf\"\u003e\u003ccode\u003ec9775a3\u003c/code\u003e\u003c/a\u003e Add asynchronous context manager support (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/130333ed769a2c9e2b87e30dd68414f00dfdde9b\"\u003e\u003ccode\u003e130333e\u003c/code\u003e\u003c/a\u003e Add marker support to pytest plugin (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/428491ed7abc2ce9bc440b2898adea73a676128a\"\u003e\u003ccode\u003e428491e\u003c/code\u003e\u003c/a\u003e Import more once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/728d0a6ec442d9b76ebc03f3ad7fcee94ffe6b24\"\u003e\u003ccode\u003e728d0a6\u003c/code\u003e\u003c/a\u003e Version 2.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/65a214ca8bf85d3e865109ff692773ea7eb60b92\"\u003e\u003ccode\u003e65a214c\u003c/code\u003e\u003c/a\u003e Import date/time modules once in C extension (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/time-machine/commit/9ff207b86d7b9c6cff95fdceab4093a4ddef16e9\"\u003e\u003ccode\u003e9ff207b\u003c/code\u003e\u003c/a\u003e Unpatch functions when travel ends (\u003ca href=\"https://redirect.github.com/adamchainz/time-machine/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/time-machine/compare/2.16.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.12.1 to 0.12.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow fixes by default (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19919\"\u003e#19919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Convert \u003ccode\u003eDatasetOrTimeSchedule(datasets=...)\u003c/code\u003e to \u003ccode\u003eAssetOrTimeSchedule(assets=...)\u003c/code\u003e (\u003ccode\u003eAIR311\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20202\"\u003e#20202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Improve the \u003ccode\u003eAIR002\u003c/code\u003e error message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20173\"\u003e#20173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Move \u003ccode\u003eairflow.operators.postgres_operator.Mapping\u003c/code\u003e from \u003ccode\u003eAIR302\u003c/code\u003e to \u003ccode\u003eAIR301\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20172\"\u003e#20172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Implement \u003ccode\u003eblocking-input\u003c/code\u003e rule (\u003ccode\u003eASYNC250\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20122\"\u003e#20122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Make \u003ccode\u003ePTH119\u003c/code\u003e and \u003ccode\u003ePTH120\u003c/code\u003e fixes unsafe because they can change behavior (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20118\"\u003e#20118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Add U+061C to \u003ccode\u003ePLE2502\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20106\"\u003e#20106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix false negative for empty f-strings in \u003ccode\u003edeque\u003c/code\u003e calls (\u003ccode\u003eRUF037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20109\"\u003e#20109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLess confidently mark f-strings as empty when inferring truthiness (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20152\"\u003e#20152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003efastapi\u003c/code\u003e] Fix false positive for paths with spaces around parameters (\u003ccode\u003eFAST003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20077\"\u003e#20077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e when lambda contains \u003ccode\u003eyield\u003c/code\u003e/\u003ccode\u003eyield from\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20201\"\u003e#20201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Handle tuples in dictionary comprehensions (\u003ccode\u003ePERF403\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19934\"\u003e#19934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Preserve return type annotation for \u003ccode\u003eParamSpec\u003c/code\u003e (\u003ccode\u003eE731\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20108\"\u003e#20108\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fix safety sections to docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/17490\"\u003e#17490\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/17499\"\u003e#17499\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/11happy\"\u003e\u003ccode\u003e@​11happy\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BurntSushi\"\u003e\u003ccode\u003e@​BurntSushi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Gankra\"\u003e\u003ccode\u003e@​Gankra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kalmaegi\"\u003e\u003ccode\u003e@​Kalmaegi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Lee-W\"\u003e\u003ccode\u003e@​Lee-W\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MatthewMckee4\"\u003e\u003ccode\u003e@​MatthewMckee4\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrettyWood\"\u003e\u003ccode\u003e@​PrettyWood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Renkai\"\u003e\u003ccode\u003e@​Renkai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShaharNaveh\"\u003e\u003ccode\u003e@​ShaharNaveh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dcreager\"\u003e\u003ccode\u003e@​dcreager\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dhruvmanila\"\u003e\u003ccode\u003e@​dhruvmanila\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c6516e9b60e7b8d3d60b1e3a0fb0db04b533de54\"\u003e\u003ccode\u003ec6516e9\u003c/code\u003e\u003c/a\u003e Bump 0.12.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20242\"\u003e#20242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1aaa0847abdebfe910513b1c883977a996da2db5\"\u003e\u003ccode\u003e1aaa084\u003c/code\u003e\u003c/a\u003e [ty] More tests for TypedDict (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20205\"\u003e#20205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b49aa3507472a92b492de0fc924eff2c4bad4248\"\u003e\u003ccode\u003eb49aa35\u003c/code\u003e\u003c/a\u003e Split LICENSE addendum by derivation type (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20222\"\u003e#20222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1e34f3f20a71a4375ba64faad43f21171e3829cd\"\u003e\u003ccode\u003e1e34f3f\u003c/code\u003e\u003c/a\u003e [ty] Fix small test typo (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20220\"\u003e#20220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/77b2cee2233620636e03f547337ff805415c7465\"\u003e\u003ccode\u003e77b2cee\u003c/code\u003e\u003c/a\u003e [ty] Add functions for revealing assignability/subtyping constraints (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20217\"\u003e#20217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/200349c6e84d04a8e0d986488f7991b17b747964\"\u003e\u003ccode\u003e200349c\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e when lambda contains \u003ccode\u003eyield\u003c/code\u003e/`yield fro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0d4f7dde9967704767d8515aadcf8c94353dde35\"\u003e\u003ccode\u003e0d4f7dd\u003c/code\u003e\u003c/a\u003e [ty] Treat \u003ccode\u003e__new__\u003c/code\u003e as a static method (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20212\"\u003e#20212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/cb1ba0d4c26dd649bfab9de7ae0e84c0e28e910c\"\u003e\u003ccode\u003ecb1ba0d\u003c/code\u003e\u003c/a\u003e Expose \u003ccode\u003eIndentation\u003c/code\u003e in \u003ccode\u003eruff_python_codegen\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20216\"\u003e#20216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/cda376afe079b54b6779704bdd740c9e81423e39\"\u003e\u003ccode\u003ecda376a\u003c/code\u003e\u003c/a\u003e [ty]eliminate definitely-impossible types from union in equality narrowing (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b14fc961413c5ca032fdfdff29fcc6be4f9c8a75\"\u003e\u003ccode\u003eb14fc96\u003c/code\u003e\u003c/a\u003e Update Rust crate tracing-subscriber to v0.3.20 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/20162\"\u003e#20162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.1...0.12.12\"\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 \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/dsp-testing/dtos-manage-breast-screening/pull/56","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsp-testing%2Fdtos-manage-breast-screening/issues/56","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/56/packages"}}]}